0

我有以下标签部分

%span.tag-label
  = link_to "#{tag}"  , :controller => "searches", :action => "search_tags", :search_type => search_type,
  :tag_type => tag_type, :tag =>"#{tag}"

我将标签作为集合传递给部分:

= render "shared/tag_item", :collection => @listing.keyword_list, :as => :tag, 
:search_type => "Listing", :tag_type => nil

出于某种原因,我收到了这个错误:

wrong number of arguments (0 for 1) 

在我的部分。

如果我只是将纯文本放在link_to "text" and :tag =>"text"那么它就可以了。为什么我的嵌入文本"#{tag}"在这种情况下不起作用?

谢谢你。 更新显示错误跟踪:`endered listings/show.html.haml within layouts/application (148.4ms) Completed 500 Internal Server Error in 232ms

ActionView::Template::Error (wrong number of arguments (0 for 1)):
    1: %span.tag-label
    2:   = link_to "#{tag.to_s}"  , :controller => "searches", :action => "search_tags", :search_type => search_type,
    3:   :tag_type => tag_type, :tag =>"#{tag.to_s}"
  <a href="txmt://open?url=file:///Users/app/views/shared/_tag_item.html.haml&amp;line=2&amp;column=1">app/views/shared/_tag_item.html.haml
4

2 回答 2

1

将局部变量传递给您的局部变量时,您必须将render方法传递给 key :locals

 render "shared/tag_item", :collection => @listing.keyword_list, :as => :tag, :locals => { :search_type => "Listing", :tag_type => nil }

虽然我不得不承认,但我希望这会给出 NameError 而不是 ArgumentError。您的代码中是否存在 search_type 或 tag_type 方法?

于 2012-04-08T06:47:03.437 回答
0

不确定这是否会解决您的问题,但您不需要插入tag变量。你可以只写link_to tagand :tag => tag

于 2012-04-08T02:29:42.930 回答