この例では、ネストされたフォーム内でRails 3 content_tagメソッドを使用し、目立たないようにjQueryを使用して(または少なくともそうなりたい)、削除ボタンアイコンを複製しようとしています。
Firebugで検査するときに生成されるhtmlは以下のとおりです。
<a class="btn btn-danger" href="#">
<i class="icon-trash icon-white"></i>
Delete
</a>
以下を使用してアイコン付きのボタンを生成していますが、「成分の削除」を追加できず、hrefの「#」も取得できません。
これが部分的な成分の中からの私のコードです:
<%= link_to content_tag(:a, content_tag(:i, '', class: "icon-trash icon-white"), class: "btn btn-danger remove_fields") %>
これにより、以下が生成されます。
<a class="btn btn-danger remove_fields">
<i class=icon-trash icon-white"></i>
</a>
これは Api dock --content_tag からの情報に基づいていました
次のコード例があります。
content_tag(:div, content_tag(:p, "Hello world!"), :class => "strong")
# => <div class="strong"><p>Hello world!</p></div>
N.B.これをlink_toブロックで機能させることはできますが、do..endを使用せずに、さらに重要なことにcontent_forメソッドでこれを1行で実行できるかどうかを知りたいと思いました。
<%= link_to('#', class: "btn btn-danger remove_fields") do %>
<i class: "icon-trash icon-white"></i>
Delete
<% end %>
<%= link_to(body, url, html_options = {}) %>
したがって、1行でのリクエストは次のとおりです。
<%= link_to content_tag(:i, "", class: "icon-trash icon-white") + "Delete", path_to_stuff, method: :delete, class: "btn btn-danger remove_fields" %>
最も複雑な部分は「ボディ」です。これらすべてのcontent_tagヘルパー(link_toなどを含む)が文字列を返すことを覚えておく必要があります。
しかし、これは醜いです。そして長い。そして維持するのは難しい。したがって、ブロックを取る提案されたソリューションははるかに優れています。
ビューヘルパーメソッドを作成しないのはなぜですか
def link_to_delete
link_to %{<i class="icon-trash icon-white"></i> Delete}, '#', class: "btn btn-danger remove_fields"
end
次に、link_to_delete
を使用してビューで呼び出します。
なぜあなたはそれがリンクである必要があるのですか?
def delete_button
%{<span class="btn btn-danger remove_fields"><i class="icon-trash icon-white"></i> Delete</span>}
end
私はcontent_forでそれをあまり好きではありませんが:
content_tag(:span, %{#{content_tag(:i, nil, :class => "icon-trash icon-white")} Delete}.html_safe, :class => "btn btn-danger remove_fields")
タグを付けたい場合は、:span
を:a
に変更してください。