1

私はhamlでf.semantic_fields_forを使用しています

これが現在のスニペットです。

      %ul.documents
        =f.semantic_fields_for :documents do |u|
          = link_to(u.object.comment.presence || u.object.file.original_filename, u.object.file.url)                                                                                     
          = u.input :comment, :as=>:string
          = u.hidden_field :_destroy
          = link_to_function image_tag("/img/del_documets.png"), "remove_fields(this)", :class => "btn"

ここでの問題は、formtasticによって作成された「li」の中に「u.input:comment、:as =>:string」だけが含まれていることです。リンクやその他のフィールドはどこか別の場所にあり、この壊れたhtmlを正しくスタイル設定することは不可能です。

すべてが正しいli内に入ることを確認する方法はありますか?

f.semantic_fields_forの直後にliを追加しても、最初のリンクのみがラップされ、次の要素は完全に上のulによってのみラップされます。

4

2 に答える 2

1

formtasticは、内部に入らないように<li>常に入力をラップしているようですが、これは無効です。<fieldsets><ol>

それを回避する最善の方法は、<li>すべての要素を配置し、必要に応じて入力に追加wrapper_html => { :class => :your_class }することです。そうすれば、自分のやり方で物事をスタイリングできます。

ul.documents入力の周りは必要ないと思います。semantic_fields_forすでにすべてを.を使用してラップしています<ol>

これは、htmlを直接生成するライブラリの場合ではありません。htmlを生成させるのではなく、htmlとcssをそれらに適合させる方がよいでしょう。

私はそれをします(そしてそれから私自身のCSSをスタイルします):

    =f.semantic_fields_for :documents do |u|
      %ul.documents
        %li= link_to(u.object.comment.presence || u.object.file.original_filename, u.object.file.url)                                                                                     
        = u.input :comment, :as=>:string
        %li= u.hidden_field :_destroy
        %li= link_to_function image_tag("/img/del_documets.png"), "remove_fields(this)", :class => "btn"

お役に立てれば。

于 2012-06-19T15:30:53.527 に答える
1

inputs次のようにラッパーを生成するときに、Formtasticのデフォルトの動作をオーバーライドすることもできます。

module Formtastic
  module Inputs
    module Base
      module Wrapping
        def input_wrapping(&block)
          template.content_tag(:li,
            [template.capture(&block), error_html, hint_html].join("\n").html_safe, 
            wrapper_html_options
          )
        end
      end
    end
  end
end

に注意してcontent_tag(:liください。content_tag(:divたとえば、に置き換えることができます。

Railsでモジュールメソッドをオーバーライドする方法を知っていますか?

于 2012-06-19T19:06:03.120 に答える