7

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

Twitter-Bootstrapの削除ボタンのアイコン(例)

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 ドック - content_tagからの情報に基づいています。

次のコード例がありました:

content_tag(:div, content_tag(:p, "Hello world!"), :class => "strong")
# => <div class="strong"><p>Hello world!</p></div>

誰かが親切に私を正しい方向に向けることができますか? 上記の詳細が表示されないのはなぜですか?

NBこれをlink_toブロックで機能させることができますが、これがdo..endなしで1行で実行できるかどうか、さらに重要なことにcontent_forメソッドで実行できるかどうかを知りたいと思いました。

<%= link_to('#', class: "btn btn-danger remove_fields") do %>
  <i class: "icon-trash icon-white"></i>
  Delete
<% end %>
4

2 に答える 2

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

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

于 2012-04-30T19:25:27.317 に答える
1

ビュー ヘルパー メソッドを作成しない理由

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

于 2012-04-30T19:18:44.620 に答える