Jestem nowy w szynach i próbuję połączyć się zkonkretna metoda w kontrolerze. Mój kontroler nazywa się OrganismsController, a metoda to upload_reference_file. Patrząc na inne podobne pytania mam teraz link do pracy jako
<%= link_to "Upload Reference Sequence", :controller => :organisms, :action => :upload_reference_file %>
Muszę jednak przekazać obecny organizm do metody upload_reference_file. Próbowałem już
<%= link_to "Upload Reference Sequence", :controller => :organisms, :action => :upload_reference_file(organism) %>
ale szyny narzekają, że powyższy kod nie jest poprawną składnią. Wewnątrz pliku moich tras mam metodę dopasowaną do działania kontrolera jako
match "/organisms/upload_reference_file" => "organisms#upload_reference_file"
Wszelaka pomoc jest bardzo doceniana. Dzięki!
Odpowiedzi:
2 dla odpowiedzi № 1Powinieneś zdefiniować działanie RESTful zgodnie z opisem w "Dodawanie bardziej restrykcyjnych akcji" sekcja dokumentacji Rails Routing. Spowoduje to utworzenie metody pomocniczej akceptującej ścieżkę i umożliwiającej bardziej naturalne wykorzystanie.
Na przykład, jeśli nie masz żadnych dodatkowych działań członków:
resources :organisms do
get "upload_reference_file", :on => :member
end
Będziesz wtedy miał upload_reference_file_organism_path
, obracając twój link_to
w:
<%= link_to "Upload Reference Sequence", upload_reference_file_organism_path(organism) %>
(W przypadku, gdy wymaga to poprawienia, można uzyskać utworzoną nazwę ścieżki, uruchamiając ją rake routes
; moja pamięć nie jest tak dobra.)