我正在开发一个ruby on rails的个人网站。 我有一个动态生成的表单:
<div>
<%= @request_type %>
<h1>Login Form</h1>
<% if @error == true %>
<h1>Error: Login Information Invalid</h1>
<% end %>
<%= form_for :user, url: {action: "login"}, method: :post do |f| %>
<p> E-mail: <br /> <%= f.text_field :email %></p>
<p> Password: <br /> <%= f.password_field :password %></p>
<p><%= submit_tag "Log In!", :disable_with => "Logging in..." %></p>
<% end %>
</div>
@request_type
被设置为request.request_method()
,暂时用于调试目的。
为表单生成的HTML具体如下所示:
<form accept-charset="UTF-8" action="/login" method="post">
<!-- authentication token here -->
<p> E-mail: <br /> <input id="user_email" name="user[email]" type="text" /></p>
<p> Password: <br /> <input id="user_password" name="user[password]" type="password" /></p>
<p><input data-disable-with="Logging in..." name="commit" type="submit" value="Log In!" /></p>
</form>
但是,无论何时提交,标题都是使用GET方法设置的,而不是在表单元素中声明的POST(请参阅method="post"
)。
R.O.R.可能与正在发生的事情无关...我正在使用Chrome来测试我的应用程序。有关为什么会发生这种情况的任何想法?我绝对需要使用POST的请求。
如果有任何其他信息可能对解决此问题有用,请询问,我会提供。
编辑:相关路线:
login POST /login(.:format) user#login
GET /login(.:format) user#login'
我认为没有理由发布与&#34;登录&#34;无关的路线。动作。
答案 0 :(得分:1)
和= submit_tag
应为= f.submit_tag
同时替换:
<%= form_for :user, url: {action: "login"}, method: :post do |f| %>
使用:
<%= form_for :user, url: login_path, method: :post do |f| %>