我有以下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的回答是正确的
答案 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| %>