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"} %>
<%= 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 = {})
あなたが持っていることを行う適切な方法は次のとおりです。
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でラップすることが助けになった場合、link_to構文ではなく、HTML構造に問題があるように聞こえます。
私は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 %>
Rails 5では、上記の方法でも間違ったURLが生成されるため注意してください。 Railsで機能するためには、コントローラーとアクションをリテラルハッシュに入れる必要があります。
<%= 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" %>