无法在登录后映射路线

时间:2017-07-16 22:43:46

标签: ruby-on-rails ruby routes

我是初学者ROR程序员,正在尝试构建一个新用户可以注册的应用程序。用户注册成功后,用户可以使用已注册的电子邮件和密码登录。

当我在填写登录表单后点击登录按钮时,它会显示错误:

  

没有匹配的路线"发布"。

sessions_controller.rb:

sessions_controller

users_controller.rb:

users_controller

routes.rb中:

root 'users#index'
get "/app/views/users/signup.html.erb", to: "usesrs#new", as:"signup"
post '/users', to: 'users#create'
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'

resources :users do
  resources :sessions
end

index.html.erb(登录页面):

<div class="container">
  <h1 class="col-md-4 col-md-offset-3">Dropbox</h1>
</div>

<div class="container">
  <h2 class="col-md-4 col-md-offset-3">Log in</h2>

  <div class="col-md-4 col-md-offset-3">
    <%= form_for :user do |f| %>
      <label>Email</label>
      <%= f.email_field :email, class: 'form-control' %>
  </div>

  <div class="col-md-4 col-md-offset-3">
    <label>Password</label>
    <%= f.password_field :password, class: 'form-control' %>
  </div>

  <div class="checkbox, col-md-4 col-md-offset-3">
    <input type="checkbox" value="remember-me"> Remember me
  </div>

  <div class="col-md-4 col-md-offset-3">
    <%= f.submit "Log in", class: "btn btn-lg btn-primary btn-block" %>
  </div>

  <% end %>

  <div class="col-md-4 col-md-offset-3">
    <a href="/app/views/users/signup.html.erb">Sign up</a>
  </div>
</div>
</div>

任何人都可以指导我的代码有什么问题,我该如何纠正它。

1 个答案:

答案 0 :(得分:0)

form_for您正在传递:user,因此rails会将action中的属性form设置为User路由,但您要发送数据为session#create,因此您必须指定正确的url(即"/login"),如下所示:

<%= form_for :user, url: "/login" do |f| %>

您可以详细了解form_for here