我有一个表单可以正常工作,直到我添加样式标记(我正在使用twitter bootstrap)。该应用程序是Rails 3.1,我在Mac上。这是一个可以正常运行的表单:
<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="alert-message error">
<h2>Form is invalid</h2>
<ul>
<% for message in @user.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</div>
<div class="actions"><%= f.submit %></div>
<%end %>
然后,当我将标签添加到相同的确切形式时:
<form class="form-stacked">
<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="alert-message error">
<h2>Form is invalid</h2>
<ul>
<% for message in @user.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</div>
<div class="actions"><%= f.submit %></div>
<%end %>
</form>
此表单似乎发出GET请求而不是POST请求。不像没有标签那样在保存时重定向我,我在网址中看到了这一点: http://localhost:3000/signup?utf8=%E2%9C%93&authenticity_token=Pt1vOp7lykCPFdj5BJeZ6xwJM2vy0JomMGSKoB%2FyYpU%3D&user%5Bemail%5D=test%40get.com&user%5Bpassword%5D=kevin&user%5Bpassword_confirmation%5D=kevin&commit=Create+User
我已尝试在rails和HTML中指定post。使用以下方法在rails中指定它:method =&gt; post产生相同的结果(上面的GET请求和URL信息)。在HTML中使用看起来像一个POST请求,但User对象没有保存(我相信这是因为我没有被重定向到root_url,它在控制器中设置并且在不使用标签时工作正常)。有什么想法吗?
答案 0 :(得分:5)
你想要这个:
<%= form_for @user, :html => { :class => "form-stacked", :id => "something" } do |f| %>
stuff goes in here as before
<% end %>