在我添加样式标签之前,我有一个可以正常工作的表单(我正在使用 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 请求。我没有像没有标签那样在保存时重定向我,而是在 URL 中看到了这一点:
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。使用 :method => post 在 rails 中指定它会产生相同的结果(上面的 GET 请求和 URL 信息)。在 HTML 中使用看起来像一个 POST 请求,但用户对象没有保存(我相信这是这种情况,因为我没有被重定向到 root_url,它在 Controller 中设置并且在不使用标签时工作正常)。有任何想法吗?

最佳答案

你要这个:

<%= form_for @user, :html => { :class => "form-stacked", :id => "something" } do |f| %>
  stuff goes in here as before
<% end %>

关于HTML <form> 标签导致 Rails 表单提交 GET 而不是 POST 请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8161995/

10-16 22:37