13

form_forオプションを使用してクラスを追加すると、デフォルトまたはクラスhtml: {class: "form-horizontal"}がオーバーライドされます。既存の form_helper クラスを維持しながらクラスを追加するにはどうすればよいですか?new_modeledit_model

私が欲しい:

<form class="edit_model form-horizontal">また

<form class="new_model form-horizontal">

それ以外の:

<form class="form-horizontal">

4

6 に答える 6

8

私はまったく同じ問題に遭遇しました。最終的に、私はこの解決策を思いついた

form_for @foo, :html => {:class => "form-horizontal #{controller.action_name}_model_name"}

これがあなたに役立つには少し遅すぎるかもしれませんが、他の誰かがそれを役に立つと思うかもしれません.

于 2013-11-14T19:02:33.630 に答える
1

Maybe not an ideal solution, but have you considered doing it with JS/Jquery?

For example:

$(document).ready(function(){
    $('form.edit_model').addClass('form-horizontal')
});
于 2013-01-31T09:38:07.413 に答える
1

ビューヘルパーdom_class(object, prefix = nil)を使用して、クラス名を生成できますform_for

フォームで直接行うのはあまりきれいではありませんが、ヘルパーに組み込むことは単なるチケットかもしれません。例えば:

# app/helpers/application_helper.rb
def class_for object, *additional_classes
  additional_classes.unshift dom_class(object, object.persisted? ? 'edit' : 'new')
end

# app/views/models/_form.html.erb
<%= form_for @model, :html => {:class => class_for(@model, 'form-horizontal')} do |f| %>
  <%# ... %>
<% end %>

<form class="new_model form-horizontal" ...>
于 2016-06-01T23:21:02.960 に答える
0

マージメソッドを使用してみましたか? [ http://ruby-doc.org/core-1.9.3/Hash.html#method-i-merge] html = html.merge(new) { |key, value1, value2| のようなもの value1 + " " + value2 } を使用すると、新しい値をクラス値にフィードできます。[簡単な編集: html を完全に上書きしないように、実装の構成とテストに注意してください)

于 2015-12-16T23:04:22.267 に答える
0
html: {class: "edit_model form-horizontal"}
于 2012-05-31T18:35:24.340 に答える