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

时间:2012-02-01 04:54:58

标签: ruby-on-rails forms

我有以下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>

我想设置课程。我该怎么做?

&lt; - 更新 - &gt;

有了这个:

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

我收到此错误:

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

&lt; - 第二次更新 - &gt;

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

5 个答案:

答案 0 :(得分:56)

form_tag需要2个选项哈希值,第一个哈希值传递给url_for,第二个哈希值传递给表单构建器。

所以,你必须这样做:

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

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

答案 1 :(得分:8)

这对我有用:

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

使用Rails 3.0.15

答案 2 :(得分:8)

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

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

<% end %>

答案 3 :(得分:1)

您可以按照以下方式执行操作:

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

答案 4 :(得分:-1)

如果您发现了这个问题,并且实际上想要解决form_for的类命名:

<%= form_for @task, html: {:class => "custom_class"} do |f| %>