我正在尝试实现搜索功能但无法确定simple_form_for
需要与路线匹配的内容:
resources :shows do
member do
get :search
end
resources :episodes
end
我尝试过几种不同的格式:
# 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 %>
当我在控制器中放置一个字符串代替params[:search]
查询时,我将保留该代码。我在<%= render 'search', show: @show %>
中使用views/shows/show.html.erb
调用表单。
答案 0 :(得分:1)
由于您期望params[:id]
中的对象,这意味着它是成员路线而不是集合路线。
将您的路线文件更改为:
resources :shows do
member do
get :search
end
resources :episodes
end
调试提示:在这种情况下,总是看到构建的URL(例如http://localhost:3000/shows/search.6?utf8=%E2%9C%93&search%5Bsearch%5D=test&commit=Search)是什么.6没有正确传递URL ..因此路径助手的问题。