向link_to添加一个类正在打破链接

时间:2011-04-18 00:43:20

标签: ruby-on-rails link-to

我在RoR 3中使用link_to

当我像这样使用它时,它可以正常工作:

<%= link_to "Add to your favorites list",:controller => 
            'favourite_companies', :action =>'create', 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}" %>

但我也想传授一堂课

但是,这对我不起作用。该课程有效,但它打破了链接。有什么想法吗?

<%= link_to "Add to your favorites list",{:controller => 
            'favourite_companies', :action =>'create'}, 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}",
            :class=>"ui-button-text button_text"}  %>

4 个答案:

答案 0 :(得分:60)

<%= link_to "Add to your favorites list",{:controller => 
            'favourite_companies', :action =>'create'}, 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}",
            :class=>"ui-button-text button_text"}  %>

试试这个

<%= link_to "Add to your favorites list", :controller => 
            'favourite_companies', :action =>'create', 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}",
            { :class=>"ui-button-text button_text" }  %>

由于:class应该在:html_options(参考API)

link_to(body, url, html_options = {})

答案 1 :(得分:30)

正确的做法如下:

link_to "Foo", { URL_FOR PARAMS HERE }, :class => "bar"

就像这样手动设置控制器和动作一样,这是废话。 Rails为您构建url帮助程序;使用它们可以节省一些时间,精力并增加清晰度:

link_to "Foo", favourite_companies_path(@company), :method => :post

你正在用字符串插值做的事情也是一个坏主意......它完全没有任何理由浪费和混乱。以下是相同的,只是更好:

link_to "Foo", :company_id => @company.id, :company_name => @company.name

至于你的链接无法正常工作的原因,如果将它包装在div中,听起来好像你的HTML结构有问题,而不是link_to语法。

答案 2 :(得分:7)

我使用了link_to do-end块,因此上述解决方案对我来说并不适用。

如果要在标记中嵌入其他标记,则可以使用link_to do-end块。

<%= link_to favourite_companies_path(:company_id => @company.id, :another_url_param_here => "bar"), { :class => "ui-button-text button_text", :title=> "We can have more html attributes as well" } do %>
  <i class="fa fa-star"></i>
  <%= @company.company_name %>
<% end %>

在这种情况下它是

<%= link_to path(url_params), html_options = {} do %>
<% end %>

答案 3 :(得分:2)

要小心,因为在Rails 5中,上述方法仍然会导致错误的URL生成。控制器和动作需要放在文字哈希中才能在Rails 5中运行。你将拥有的内容应该是这样的

<%= link_to "Add to your favorites list", 
        { controller: "favourite_companies", action:"create"}, 
        company_id: @company.id,   
        company_name: @company.company_name,
        class: "ui-button-text button_text"   %>