だからこれは私のコントローラselect_tagに整数を渡す
def index
@tutor = Tutor.where(:admin => false)
@tutor = @tutor.subject_search(params[:subject_search]) if params[:subject_search].present?
@tutor = @tutor.fees_search(params[:fees_search]) if params[:fees_search].present?
end
であり、これはモデル
fees_search
方法
def self.fees_search(amount)
@tutor ||= Tutor.where(admin: false)
@tutor.map do |tutor|
@fees = tutor.profile.fees
if @fees <= amount
#puts 'if is working'
@tutor = tutor
else
#puts 'else is working'
@tutor = nil
end
@tutor
end
end
からのメソッドであり、これはsubject_search
方法であり、
def self.subject_search(name)
@result = Subject.where("name LIKE ?" , "#{name}").take
@tutor = @result.tutors
end
だから私は@tutor = Tutor.subject_search('English')
のような何かを私のレールのコンソールの後に@tutor.fees_search(20)
と私は結果を得ることができます。しかし
私のインデックスビューで行われ、私は、ブラウザでの検査時に
<%= label_tag 'fees_search', 'Fees' %>
<%= select_tag 'fees_search', options_from_collection_for_select(, :selected => params[:fees_search]), :include_blank => true, class:'form-control' %>
<%= submit_tag 'Filter', class: 'btn btn-primary btn-xs' %>
はそして、私は<option value = "10">
を参照してくださいフォーム内のビューに基づいてcomparison of Fixnum with String failed
ので、エラーが表示される(とそう何かを推測することがエラーが出てくる理由ですか?その場合、どうすればselect_tag
にinteger
の値を代わりに出力することができますか?
また、件名や手数料をフィルタリングするためのより洗練されたソリューションがありますか?私は関係を掲示する必要がありますか?