【发布时间】:2014-09-04 16:21:04
【问题描述】:
我已通过 -
将值传递到搜索页面<%= 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
我没有传递参数。我不想在搜索中使用这个任意参数,我只想在搜索完成后使用它。我如何实现这一目标?我需要向我的控制器添加搜索操作吗?
【问题讨论】:
-
如果不出意外,您可能希望使用
@book.id作为参数,而不是书籍的字符串表示形式。链接渲染如何? -
嗨 - @book.id 的好点,我已经做出了改变,并将更新问题。当我运行搜索时,它会出现“ActiveRecord::RecordNotFound in UsersController#index 找不到没有 ID 的书” - 谢谢,Dan
-
这不是你的问题,但说
@book = Book.find_by_id(params[:bookto])而不是@book = Book.find(params[:bookto])总是更安全:如果没有找到一本书,前者会将@book设置为nil,后者会爆炸。 -
感谢 Max,很高兴知道,已相应更新。
标签: ruby-on-rails search ruby-on-rails-4