2016-02-21 1 views
0

Je suis en train de mettre en œuvre une fonction de recherche mais ne peut pas comprendre ce que simple_form_for a besoin de faire correspondre les routes:passage de paramètres pour obtenir membre par simple_form

resources :shows do 
    member do 
    get :search 
    end 

    resources :episodes 
end 

J'ai essayé quelques formats différents :

# views/shows/_search.html.erb 

<%= simple_form_for :search, url: search_show_path(show), :method => :get do |f| %> 
    <%= f.input :search %> 

    <%= f.button :submit, "Search", class: "btn btn-default" %> 
<% end %> 

<%= simple_form_for search_show_path(show), :method => :get do |f| %> 
    <%= f.input :search %> 

    <%= f.button :submit, "Search", class: "btn btn-default" %> 
<% end %> 

<%= simple_form_for search_show_url(show), :method => :get do |f| %> 
    <%= f.input :search %> 

    <%= f.button :submit, "Search", class: "btn btn-default" %> 
<% end %> 

Lorsque je place une chaîne dans le contrôleur en place de params[:search] la requête fonctionne, donc je vais laisser ce code dehors. J'appelle le formulaire avec <%= render 'search', show: @show %> dans views/shows/show.html.erb.

Répondre

1

Étant donné que vous attendez un objet dans params[:id], cela signifie qu'il s'agit d'une route membre et non d'une collection.

Modifier vos itinéraires fichier à:

resources :shows do 
    member do 
    get :search 
    end 

    resources :episodes 
end 

Conseil de débogage: toujours voir ce qui est l'URL qui se construit (par exemple http://localhost:3000/shows/search.6?utf8=%E2%9C%93&search%5Bsearch%5D=test&commit=Search) dans ce cas .. 6 n'a pas été correctement se passait dans l'URL .. ainsi un problème avec les assistants path.