3
<%= form_for @user1 do |f| %>

    Username: <%= f.text_field :username %>      <br />
    Password: <%= f.password_field :password %>  <br />.
    Email:    <%= f.email_field :email %> <br />

    <%= submit_tag "Add" %>

<% end %>

我是 ruby​​ 新手,我正在尝试创建简单的程序,但是我遇到了这个错误,我不知道为什么。我有这个错误

undefined method `users_path' for #<#<Class:0x000000020576f0>:0x0000000335d5d8>

这里的解决方案是什么?

class UserController < ApplicationController
  def add
    @user1 = User.new
    respond_to do |format|
      format.html
      format.json {render :json => @user1}
    end
  end
4

6 回答 6

23

您是否在 中定义了路线config/routes.rb

Rails.application.routes.draw do
  resources :users
  # ...
end
于 2012-04-19T13:13:51.093 回答
0

我在我的 中遇到了这个错误config/routes.rb,我错误地有user(单数):

resources :user

它必须是users(复数):

resources :users
于 2017-11-08T21:43:49.797 回答
0

如果你运行这个命令,你会发现第一列中rake routes没有 for 的条目。users_path这意味着您没有为提交表单时将调用的操作定义路由。

如果要使用资源,只需添加:

resources: users

如果你想对动作使用不同URL(route name)users#new,然后添加

resources: users, except: [:new]

users#new在 routes.rb 文件中的路线下方。

而且,如果您不想采用资源方式,请添加一条新路线:

post 'users', to: 'users#create'
于 2020-10-05T13:17:40.363 回答
0

当我们有一个表单并且当我们按下提交按钮时 Rails 不知道在哪里提交表单时,就会发生这种情况。为此,我们需要去路线并确保我们有resources:users

Rails.application.routes.draw do

#all the other resources and routes

resources :users

end

在其他答案之一中,我看到

resources :users, except[:new]

仅当我们已经在路由中引入了新操作时才使用它:

resources :posts

get 'signup', to: 'users#new 

resources :users, except[:new]
于 2022-02-20T14:59:23.650 回答
0

在你的课堂UserController上,使用:

route: get /signup, to: 'user#new'
.
.
resources :users

其中“ :users”是复数,因为您将注册多个用户

于 2016-10-16T00:40:42.300 回答
0

在您的config/routes.rb文件中添加:

resources :users, except: [:new]
于 2021-12-11T19:34:23.670 回答