Rails form_for错误的控制器操作

时间:2014-06-17 16:54:22

标签: ruby-on-rails forms routes railstutorial.org

直接使用Rails教程。我无法获取登录表单来调用create方法。 Debug显示它只调用新操作。设置具有数据库的用户时没有问题,因此使用了以下内容:

<%= form_for @user do |f| %>

在这种情况下,没有模型,我按照教程的建议做了:

<%= form_for(:session, url: sessions_path) do |f| %> 

快速浏览一下rake路线,可以看出该路线是有效的:

Prefix Verb      URI Pattern                 Controller#Action                                                                                                                                                                                   
   root GET      /                           site_pages#root                                                                                                                                                                                     
  about GET      /about(.:format)            site_pages#about                                                                                                                                                                                    
 signup GET      /signup(.:format)           users#new                                                                                                                                                                                           
signout DELETE   /signout(.:format)          sessions#destroy                                                                                                                                                                                    
 signin GET      /signin(.:format)           sessions#new                                                                                                                                                                                        
  users POST     /users(.:format)            users#create                                                                                                                                                                                        
new_user GET     /users/new(.:format)        users#new                                                                                                                                                                                           
user GET         /users/:id(.:format)        users#show                                                                                                                                                                                          
        DELETE   /users/:id(.:format)        users#destroy                                                                                                                                                                                       
sessions POST    /sessions(.:format)         sessions#create                                                                                                                                                                                     
new_session GET  /sessions/new(.:format)     sessions#new                                                                                                                                                                                        
session DELETE   /sessions/:id(.:format)     sessions#destroy   

不确定我错过了什么。已经搞乱了一个多小时。尝试更改为form_tag,它仍然以相同的方式作出反应。我已经用多种方式编辑了路线和表格,以便在没有运气的情况下触发正确的功能。

我错过了什么?感谢。

控制器补充:

def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
        #SIGN IN AND REDIRECT
    else
        flash.now[:danger] = "Invalid Submission. Please Try Again."
        render 'new'
    end
end

1 个答案:

答案 0 :(得分:1)

<div class="form-horizontal" role="form">
      <%= form_for(:session, url: sessions_path) do |f| %> 

            <%= render 'layouts/flash' %> 

            <%= f.label :email %>
            <%= f.text_field :email %>

            <%= f.label :password %>
            <%= f.password_field :password %>

            <%= f.submit "Log In", class: "btn btn-primary btn-width-30" %>

       <% end %>
</div>