对于允许用户通过输入演员名称搜索电影的电影站点,我引用了高级搜索表格的铁路,但在同一参数中搜索多个条目时遇到了困难。(即)(多个演员条目)。
下面的代码允许选择多个参与者,但我不确定如何重写模型代码以允许多个actor_ids。
反馈将是非常感谢!
searches/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发布于 2012-08-26 17:06:27
由于要将这些查询保存在数据库中,请尝试如下
def find_movies
movies = Movie.order(:name)
movies = movies.where(actor_id: actor_id) if actor_id.present?
end在不保存查询的情况下,可以实现以下操作
在你的search.rb里
def find_movies(actors)
movies = Movie.where(:actor_id => actors)
end然后在控制器操作中发送参数。
find_movies(params[:actor_id])编辑
若要从actor_id中提取ids,请使用以下命令
["actor_id", ["", "1", "2"]][1].delete_if {|f| f == ""}所以您的方法应该如下所示
def find_movies
ids = self.actor_id[1].delete_if {|f| f == ""}
movies = Movie.order(:name)
movies = movies.where(actor_id: ids) if actor_id.present?
endhttps://stackoverflow.com/questions/12131091
复制相似问题