传递参数以通过simple_form获取成员

时间:2016-02-21 20:06:04

标签: ruby-on-rails ruby simple-form form-for simple-form-for

我正在尝试实现搜索功能但无法确定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调用表单。

1 个答案:

答案 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 ..因此路径助手的问题。