直接使用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
答案 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>