32

我在 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

4 回答 4

63
<%= 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 = {})
于 2011-04-18T00:55:27.447 回答
32

做你所拥有的正确方法如下:

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 语法有问题。

于 2011-04-18T00:56:02.807 回答
8

我正在使用 link_to do-end 块,因此上述先前的解决方案对我不起作用。

如果你想在你的 a 标签中嵌入其他标签,那么你可以使用 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 %>
于 2015-01-20T20:52:39.317 回答
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"   %>
于 2016-07-27T09:24:38.747 回答