Die Indexseite "Meine Konten" listet alle Konten auf und enthält pro Konto einen Link zu "+ Service". Dies sollte den Benutzer auf die Seite / my_services / new leiten und das Feld account_id mit der entsprechenden ID vorab ausfüllen, je nachdem, auf welchen Link auf der Indexseite Accounts geklickt wurde.
Ich habe Debug (params) am Ende jeder Seite und mit dem, was ich versuche, bekomme ich nichts anderes als: controller und: action, die in meinen Parametern für die Seite / my_services / new angezeigt werden.
Der Link, den ich versucht habe, ist folgender:
link_to "+ Service", "my_services/new", :account_id => acct.id
Ich habe dann auch Logik im Services Controller:
def new
@my_service = MyService.new
if params[:account_id]
@my_service.account_id = params[:account_id]
end
end
Kann jemand dabei helfen? Ich habe es noch nicht geschafft, es mit ein paar fiesen kleinen hackigen Dingen in Gang zu bringen, die ich ausprobiert habe.
BEARBEITEN
Es stellt sich heraus, dass verschachtelte Ressourcen (möglicherweise mit der shallow: true
Option in route.rb) der richtige Weg sind, wenn sich jemand diese Antwort in Zukunft ansieht. Meine route.rb für diesen Teil sieht jetzt so aus:
resources :accounts, shallow: true do
resources :services
end
Meine Links sehen jetzt so aus:
<%= link_to "+ Service", new_service_path(:service => { :account_id => @account.id } ) %>
quelle
Versuche dies
link_to "+ Service", my_services_new_path(:account_id => acct.id)
Es wird die account_id übergeben, wie Sie möchten.
Weitere Informationen zu link_to finden Sie unter http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
quelle
link_to "+ Service", controller_action_path(:account_id => acct.id)
Wenn es immer noch nicht funktioniert, überprüfen Sie den Pfad:
quelle