私のモデルには単純なself
メソッドが定義されています。コントローラ、モデル、ビュー。パラメータを渡すこととの混乱
def self.search(name, type)
#handle name
#handle type
end
私の混乱は、表示に関してです。&コントローラです。正しい値を渡す(正しい構文を使用する)。
ビューでは、単純な形式です。
<%= form_tag(index_path, method: :get) do %>
<%= label_tag :type, 'Type' %>
<% type_array = ["Foo", "Foo_One", "Foo_Two", "Foo_Three"] %>
<%= select_tag :type, options_for_select(type_array, selected: params[:type]), include_blank: true %>
<%= label_tag :name, 'Name' %>
<% name_array = ["Foo", "Foo_One", "Foo_Two", "Foo_Three"] %>
<%= select_tag :name, options_for_select(name_array, selected: params[:name]), include_blank: true %>
<%= submit_tag "Filter" %>
<% end %>
混乱options_for_select
未満の 、それはselect_tag :search
またはselect_tag :type
すべきですか?代わりにselected: params[:search]
にする必要がありますか?
コントローラでの
def index
@foo = Foo.all
#variation 1 that i tried
@foo = @foo.search(params[:search]) if search(params[:search]).present?
#variation 2 that i tried
@foo = @foo.search(params[:name,:type]) if search(params[:name,:type]).present?
#variation 3 that i tried
@foo = @foo.search(params[:name][:type]) if search(params[:name][:type]).present?
end
混乱二つ バリエーション3種類は、私にはほとんど意味があります。しかし、私はself.search
が呼ばれるのを見ていません。また、それはエラーを投げます(SymbolからIntegerへの暗黙的な変換はありません)。
エラーが自分のフォームにもあるかどうかわかりません。
明らかに私は、どこにパラメータを渡してそれらを「収集」するのか熟知していません。私はRubyのドキュメントを読んでみましたが、それを理解するのは苦労しました。
私は、より大きな画像は、メソッドのフォームに適切な構文(または引数を収集する方法)とは何かと思いますか?
バリエーション3と思われるように見えますが、「気分が良い」とはかなり近いです。 paramsを分離するだけでした。今の魅力のように動作します。ありがとう:) – angkiki