web-dev-qa-db-ja.com

railsのform_tagでクラス属性を設定する方法

次のhamlの行があります。

=form_tag :action => 'create', :controller => 'comments', :class => 'comment_form' do

しかし、出力を取得するhtmlは次のとおりです。

<form accept-charset="UTF-8" action="/comments?class=comment_form" method="post"></form>

クラスを設定したい。どうすればいいですか?

<-更新->

これとともに:

=form_tag ({ :action => 'create', :controller => 'comments' }, { :class => 'comment_form' }) do

私はこのエラーを受け取ります:

 syntax error, unexpected ',', expecting ')'
...', :controller => 'comments' }, { :class => 'comment_form' }...

<-2回目の更新->

上記の問題は、「form_tag」と「(」の間のスペースです@woahdaeの答えは正しいです

34
John

form_tag は2つのオプションハッシュを取ります。最初のハッシュは rl_for に渡され、2番目のハッシュはフォームビルダーに渡されます。

そのため、次のようにする必要があります。

= form_tag({:action => 'create',...}, {:class => 'comment_form'}) do

それ以外の場合Railsはすべてのキー/値のペアがurl_forのものであると考え、クエリパラメータとして理解できないキーを追加します。

57
Woahdae

Rails 5では、次のことができます。

<%= form_tag(your_named_path, {class: 'form-inline'}) do %>

<% end %>
8
pastullo

これは私のために働く:

form_tag named_route, :method => :put, :class => 'disable_on_submit'

With Rails 3.0.15

8
gamov

あなたは次のようにすることができます:

form_tag your_path, method: :get, id: "your_id", class: "your_class" do 
end
1
Khanh Pham