其他實用資訊:我使用的是decent_exposure寶石所以這可能是問題 - 修正代碼如下:在每種方法上返回字符串的Ruby對象數組。爲什麼?
query string ?utf8=✓&filter_tag_names=test
<% get_filter_tags.each do |ft| %>
<%= ft.name %>
<% end %>
:
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
於是,有趣的東西時,我稱這種現象的看法發生
錯誤消息:未定義的方法名稱爲「測試」:字符串
爲什麼試圖調用字符串上的名稱而不是標籤對象?如果我把在視圖以下,並突出部分一個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(params [:filter_tags] .split(「」))'更改爲'filter_tag_names = params [:filter_tags] .split(「」)' – rubish
有趣的是代碼工作如果我把它放在INDEX方法中,但不是在DECENT EXPOSURE塊中......但無論如何,查克發佈了一個更好的方法來做到這一點,下面... –