HTML <form> 标签导致 Rails 表单提交 GET 而不是 POST 请求

标签 html ruby-on-rails forms get ruby-on-rails-3.1

在添加样式标签之前,我有一个工作正常的表单(我使用的是 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/

相关文章:

ruby-on-rails - 无法访问 ruby​​ on rails 上的本地主机

html - 从数组中选择表单

php - 如何在php中填写PDF表单

php - 如何让文本框变回空白

javascript - 带有 overflow hidden 子项的表格单元格的高度

ruby-on-rails - 即使 user_signed_in 时,current_user 也会返回 nil?返回真

ruby-on-rails - 使用 xmpp4r_facebook 发送消息时出错

Android 4.0.1 打破了 WebView HTML 5 本地存储?

php - Joomla 2.5 - 为 iPad 添加自定义 CSS

c# 简单的 skype 应用抛出 COM 异常