Rails - 将任意参数传递给搜索

时间:2014-09-04 16:21:05

标签: ruby-on-rails search ruby-on-rails-4

我已通过 -

将值传递到搜索页面
<%= link_to 'add', users_path(bookto: @book.id) %>

在视图和

@book = Book.find_by_id(params[:bookto])

在接收控制器动作中。

我的接收(索引)视图中有一个搜索表单

<%= form_tag users_path(params[bookto: @book.id]), method: 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", name: nil %>
  </p>
<% end %>

<%= "#{@book.id}, #{@book.title}" %>

<% if @users %>
    <%= render partial: 'layouts/showusers', locals: {users: @users} %>
<% end %>

当我浏览页面时

http://localhost:3000/users?bookto=1

@book的值正确传递。但是,当我执行搜索时,参数不会传递给

http://localhost:3000/users?utf8=✓&search=mysearch

我没有传递参数。我不想在搜索中使用这个任意参数,我只是希望在搜索完成后我可以使用它。我该如何实现这一目标?我是否需要向我的控制器添加搜索操作?

1 个答案:

答案 0 :(得分:1)

为什么不在搜索表单中添加隐藏字段,如下所示

<%= form_tag users_path, method: 'get' do %>
  <p>
    <%= hidden_field_tag :bookto, @book.id %>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", name: nil %>
  </p>
<% end %>

因为你想要在你的URL中看到bookid,所以这种方法在你的情况下是可以的。