0

Railscast 111 の高度な検索フォームを使用しています。「子供なし、アジア人」など、ユーザーのプロフィールにあるキーワードを入力できるはずです。その後、プロフィールに子供がいないアジア人のユーザーを表示する必要があります。検索フォームに「asian」と入力すると、「id=asian の検索が見つかりませんでした」というエラーが表示されます。

私は混乱がどこから来ているのか知っていると信じています。高度な検索フォームでは、id に基づいてデータを取得するようにしています。たとえば、各民族には 1 ~ 10 の値が割り当てられます (1 は最初の選択であるため、アジア人です)。教育、性別などの他のオプションにも同じことが当てはまります。ただし、インデックス ページにある基本的な検索フォームについては、「ID」から取得しようとしないでください。代わりに、ユーザー データベース (すべてのプロファイル情報を含む) からの情報に基づいて全文検索を実行できるようにする必要があります。

エラーは、検索コントローラーの行を指しています。

  def index
  @search = Search.find(params[:search])

私は非常に長い間これに真剣に取り組もうとしてきましたが、頭を抱えることはできません。私は非常に多くの異なる解決策を試しましたが、うまくいかないようです。誰かが私を正しい方向に向けるのを手伝ってくれるなら、それは大歓迎です!

検索コントローラー:

  def new
    @search = Search.new
  end

  def create
    @search = Search.new(params[:search])
    if @search.save
      redirect_to @search
    else
      render 'new'
    end
  end

  def show
    @search = Search.find(params[:id])
    @users = @search.users
    end

    def index
       @search = Search.find(params[:search])
     end

end

検索モデル:

def users
    @users ||= find_users
  end

    private

  def find_users
    users = User.order(:id)
    users = users.where(gender: gender) if gender.present?
       users = users.where(zip_code: zip_code) if zip_code.present?
       users = users.where(children: children) if children.present?
       users = users.where(religion: religion) if religion.present?
       users = users.where(ethnicity: ethnicity) if ethnicity.present?
       users
  end
end

new.html (インデックス ページの検索フォームがオンになっている):

<%= form_tag searches_path, method: :get do %>
<p>
    <%= text_field_tag :search, params[:search] %>
    <%= button_tag "Search", name: nil %>
    </p>
<% end %>
4

1 に答える 1