2014-11-04 77 views
0

我正在开发一个个人网站在轨道上的红宝石。 我有一个表格被这样动态生成:张贴表单提交获取请求标题

<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' 

我看不出有任何理由张贴不与“登录”行动相关的路由。

+0

你可以做一个耙路线和后期的输出? – 2014-11-04 05:57:20

+0

@CaffeineCoder我已经发布了相关路线......我假设这就是你要找的东西?我可以发布所有这些,如果你真的想... – Serge 2014-11-04 06:03:24

+0

不,这没关系。我想下面的答案显示了代码究竟有什么问题。 – 2014-11-04 06:05:05

回答

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| %> 
+0

你能否澄清一下你的意思是“以更简洁的方式放置网址”?或者,我猜你刚刚在你的编辑中做到了这一点。 另外,感谢关​​于提交标签的说明。 – Serge 2014-11-04 06:05:14

+0

对不起,我添加路线之前写道。我发布了'login_path'建议。 – JB1980 2014-11-04 06:06:57

+0

我尝试了f.submit_tag,它给了我一个错误'undefined method'image_submit_tag'for#'...一个快速搜索告诉我使用'f.submit',但我仍然没有得到它使用POST的运气(源http://stackoverflow.com/questions/5201361/adding-a-submit-button-image-to-a-rails-form) – Serge 2014-11-04 06:12:16