web-dev-qa-db-ja.com

Rails 3.2content_tagを使用してTwitterの「削除」ボタンを生成-ブートストラップアイコン

この例では、ネストされたフォーム内でRails 3 content_tagメソッドを使用し、目立たないようにjQueryを使用して(または少なくともそうなりたい)、削除ボタンアイコンを複製しようとしています。

Twitter-ブートストラップ削除ボタンアイコン(例)

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 %>
7
rails3dev
<%= 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などを含む)が文字列を返すことを覚えておく必要があります。

しかし、これは醜いです。そして長い。そして維持するのは難しい。したがって、ブロックを取る提案されたソリューションははるかに優れています。

3
shuriu

ビューヘルパーメソッドを作成しないのはなぜですか

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に変更してください。

1
nodrog