如何在rails中使用form_tag设置class属性

Joh*_*ohn 35 forms ruby-on-rails

我有以下haml行:

=form_tag :action => 'create', :controller => 'comments', :class => 'comment_form' do
Run Code Online (Sandbox Code Playgroud)

但获得输出的html是:

<form accept-charset="UTF-8" action="/comments?class=comment_form" method="post"></form>
Run Code Online (Sandbox Code Playgroud)

我想设置课程.我该怎么做呢?

< - 更新 - >

有了这个:

=form_tag ({ :action => 'create', :controller => 'comments' }, { :class => 'comment_form' }) do
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

 syntax error, unexpected ',', expecting ')'
...', :controller => 'comments' }, { :class => 'comment_form' }...
Run Code Online (Sandbox Code Playgroud)

< - 第二次更新 - >

上面的问题是'form_tag'和'之间的空间'('@ woahdae的回答是正确的

Woa*_*dae 59

form_tag有两个选项哈希,第一个传递给url_for,第二个传递给表单构建器.

所以,你必须这样做:

= form_tag({:action => 'create',...}, {:class => 'comment_form'}) do
Run Code Online (Sandbox Code Playgroud)

否则Rails认为所有的键/值对都是url_for,它会将任何不理解的键作为查询参数附加.

  • @Mischa想通了..问题是form_tag和开放的parens之间的空间 (2认同)

gam*_*mov 8

这对我有用:

form_tag named_route, :method => :put, :class => 'disable_on_submit'
Run Code Online (Sandbox Code Playgroud)

使用Rails 3.0.15


pas*_*llo 8

在Rails 5上,您可以执行以下操作:

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

<% end %>
Run Code Online (Sandbox Code Playgroud)