"users"}-6ren"> "users"}-我正在尝试实现一个 Twitter Boostrap 登录表单,它将在每个页面上使用(因为导航栏是布局的一部分)。 但是,在尝试下面的代码时,我收到以下错误: No route matches {:a-6ren">
gpt4 book ai didi

ruby-on-rails - 没有路由匹配 { :action= >"show", :controller= >"users"}

转载 作者:行者123 更新时间:2023-12-04 00:09:02 27 4
gpt4 key购买 nike

我正在尝试实现一个 Twitter Boostrap 登录表单,它将在每个页面上使用(因为导航栏是布局的一部分)。

但是,在尝试下面的代码时,我收到以下错误:

No route matches {:action=>"show", :controller=>"users"}

用户 Controller :

class UsersController < ApplicationController

def index
@users = User.all
end

def show
...
end

def login
...
end

end

_navigation.html.erb:

<div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
<%= form_for("user", :url => user_path) do |f| %>
<%= f.label :email%>
<%= f.text_field(:email, :size => 30, :class => 'login_field', :placeholder => 'Användarnamn')%>
<%= f.label :password%>
<%= f.text_field(:password, :size => 30, :class => 'login_field', :placeholder => 'Lösenord')%>

<%= f.submit "Logga in", :class => 'login_submit btn btn-primary' %>
<% end %>
</div>

config/routes.rb:

get "home/index"

resources :users
resources :projects
resources :tickets

root :to => 'home#index'

rake 路线(与用户有关):

    users GET    /users(.:format)             users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy

我是 Rails 新手,但奇怪的是它提示路由不存在,因为要在用户 Controller 中找到“显示”操作。

我想知道的另一件事是为什么它会寻找 Action “show”,而在这种情况下它应该是“login”?

为什么会发生这种情况,我该怎么办?

最佳答案

你的错误在这一行

<%= form_for("user", :url => user_path) do |f| %>

user_path 需要一个 id。如果您将其更改为 users_path,应该可以解决它,但我认为这不是您的意图。

更新:要在用户 Controller 上使用 login 操作,您需要更新您的路线

resources :users do
post :login, on: :collection, as: :login
end

传递 :as 选项会为您创建一个名为 login_users_path 的 named_route,您可以在 form_for 上使用它。由于我们想做一个帖子,我们还需要在 form_for

中指定
<%= form_for("user", :url => login_users_path, :html => { :method => :post }) do |f| %>

关于ruby-on-rails - 没有路由匹配 { :action= >"show", :controller= >"users"},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com