Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 向链接添加类会破坏链接_Ruby On Rails_Link To - Fatal编程技术网

Ruby on rails 向链接添加类会破坏链接

Ruby on rails 向链接添加类会破坏链接,ruby-on-rails,link-to,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.com

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

“最受欢迎的公司”: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"}  %>

“最受欢迎的公司”,:action=>create},
:company_id=>“#{@company.id}”,
:company_name=>“#{@company.company_name}”,
:class=>“ui按钮文本按钮”}%>

正确的方法如下:

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结构有问题,而不是链接到语法。

我正在使用链接来完成结束块,所以上面的解决方案对我不起作用

如果要在a标记中嵌入其他标记,则可以使用“链接\完成”结束块

<%= 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 %>
@company.id,:另一个url\u param\u here=>“bar”),{:class=>“ui按钮文本按钮”,:title=>“我们还可以有更多html属性”}do%>
在这种情况下,它是

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

要小心,因为在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"   %>


您能否根据该代码发布生成的html输出?您的@company.company\u名称是否可能输出了破坏html的内容?是不是输入错误,您在
:class=>“ui按钮文本”
声明后有一个大括号?
<%= 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 %>
<%= 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"   %>