有用な追加情報:私はdecent_exposureの宝石を使用しています、これは問題になる可能性がありますので - 以下のコードを修正:だから各メソッドの文字列を返すRubyオブジェクトの配列。どうして?
expose(:get_filter_tags) do
if params[:filter_tag_names]
filter_tag_names = Array(params[:filter_tag_names].split(" "))
filter_tags = Array.new
filter_tag_names.each do |f|
t = Tag.find_by_name(f)
filter_tags << t
end
end
end
私はビューでこれを呼び出すとき、何かがおかしい起こる:
query string ?utf8=✓&filter_tag_names=test
<% get_filter_tags.each do |ft| %>
<%= ft.name %>
<% end %>
エラーメッセージ: "test"の名前が未定義です。String
Tagオブジェクトではなく文字列の名前を呼び出すのはなぜですか?私はビューに次のように入れて、1つのfilter_tag_names項目に上記のような
def getfiltertag
Tag.find_by_name(params[:filter_tag_names])
end
#view
<%= getfiltertag.name %>
query string: ?utf8=✓&filter=test
を突出している場合、私は明らかに私は、文字列の代わりに、オブジェクトの配列を取得するには何か間違ったことをやって、うまく名前を呼び出すことができます。私はちょうど何がわからない。助言がありますか?
'filter_tag_names = Array(:filter_tags).split(" "))'を 'filter_tag_names = params [:filter_tags]に変更したいかもしれません.split(" ")' – rubish
面白いことがコードが働いた私はそれをINDEXメソッドに入れてもDECENT EXPOSUREブロックには入れませんが...とにかく、チャックは下の方が良い方法を投稿しました。 –