我在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"} %>
答案 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" %>