【发布时间】:2012-08-26 14:54:01
【问题描述】:
对于允许用户通过输入演员姓名来搜索电影的电影网站,我引用了Railscast on Advanced Search Forms,但在同一参数中搜索多个条目时遇到了困难。 (即多个参与者条目)。
下面的代码允许选择多个actor,但我不确定如何重写模型代码以允许多个actor_id。
非常感谢您的反馈!
搜索/new.html.erb
<%= f.label :actor_id %>
<%= f.collection_select :actor_id, Actor.order(:name), :id, :name, {}, {:multiple => true}%>
search.rb
def movies
@movies ||= find_movies
end
private
def find_movies
movies = movies.where(actor_id: actor_id)
end
【问题讨论】:
-
您的 collection_select 是否将 id 作为参数中的值发送?
-
嗨@KyleC。 “作为价值观”是什么意思?如果我选择两个演员(id=1 和 id=2),那么我会在我的日志中看到以下内容:
Parameters: {"search"=>{"actor_id"=>["","1","2"]}, "commit"=>"Search", "id"=>"50"} -
您是否将这些查询保存在您的数据库中?
-
目前,我只保存一个演员 ID,因为我的搜索表中只有一个 actor_id 列。如果我想允许最多选择三个演员,我的搜索表中是否需要三个 actor_id 列?如果是这样,我应该如何命名列?
标签: ruby-on-rails ruby-on-rails-3 search