link_to中的块与rails3中的块的语法:remote => true,包括:class和:id

时间:2010-09-09 04:14:39

标签: ruby-on-rails-3 link-to

对于上帝的爱,我几个小时都在为此而奋斗。使用rails3 rc,1.9.2。

我正在尝试创建一个link_to,提交带有参数,类和id的ajax请求,并且需要一个块,以便我可以在名称周围插入span标记。与许多谷歌搜索一样,文档绝对没有任何帮助。这是我到目前为止所得到的:

<%= link_to(
      :url=>{
        :controller => 'themes', :action => 'remove_tag',
        :entity_id => entity_id, :theme_id => theme_id,
        :entity => entity, :element_id => element_id, :parent_id=>parent_id
      },
      :remote => true,
      :id => "theme-tag-#{entity}-#{entity_id}",
      :class => "tag")  do %>
  <span class='subtract'><%= tag %></span>
<% end %>

生成的网址如下所示:

<a href="/explore/index/theme-tag-user-3?url[controller]=themes&amp;url[action]=remove_tag&amp;url[entity_id]=3&amp;url[theme_id]=16&amp;url[entity]=user&amp;url[element_id]=filter-contributor-3&amp;url[parent_id]=filter-contributors&amp;remote=true&amp;class=tag">

测试描述符  

我无法正确指出文本“测试描述符”实际上是否正确包含在范围内;代码格式化在这里失败了一些,但是,href是错误的,没有类或id,而且下坡它继续滚动

如果我不需要块,我可以添加名称而不必指定:url =&gt; {...}(如果关闭会抛出一个异常,请继续执行),然后按照使用:remote =&gt; true,:id =&gt;“whatever”,:class =&gt;“blah”并且它有效。我究竟做错了什么?因为我一般都是rails的新手,所以我也想了解为什么这种语法必须有这么大的差异?我的意思是,非常感谢上帝,你不必在网络应用中写出很多像这样的链接...; - )

提前致谢

2 个答案:

答案 0 :(得分:3)

原来你必须做url_for(...)而不是:url =&gt; {...}并且它都按预期工作。

答案 1 :(得分:2)

只需将wkhatch的评论放在这里,就可以很好地格式化了。

<%= link_to(
    url_for(:controller=>'themes', 
            :action=>'remove_tag', 
            :entity_id=>entity_id, 
            :theme_id=>theme_id, 
            :entity=>entity, 
            :element_id=>element_id, 
            :parent_id=>parent_id), 
    :remote=>true, 
    :id=>"theme-tag-#{entity}-#{entity_id}") do %>
       <span class='subtract'></span><%= tag %>
<% end %>