0

ユーザーが俳優名を入力して映画を検索できる映画サイトの場合、高度な検索フォームでRailscastを参照しましたが、同じパラメーターで複数のエントリを検索するのに問題があります。(つまり、複数のアクターエントリ)。

以下のコードでは、複数のアクターを選択できますが、モデルコードを書き直して、複数のactor_idを使用できるようにする方法がわかりません。

フィードバックをいただければ幸いです。

searchs / 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
4

1 に答える 1

1

これらのクエリをデータベースに保存しているので、これを試してください

  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からIDを抽出するには、これを使用します

   ["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?
  end
于 2012-08-26T17:06:27.787 に答える