Html 未定义的方法“用户-修订者-路径'&引用;校订者“新”中的命名错误;

Html 未定义的方法“用户-修订者-路径'&引用;校订者“新”中的命名错误;,html,ruby-on-rails,ruby,controller,routes,Html,Ruby On Rails,Ruby,Controller,Routes,我有一个奇怪的错误,我想这是来自我应用程序的routes.rb部分。我试图给用户一个机会,当他们输入一个表单时,他们可以成为一个修改者。一个用户只能成为一次审校者,因此它的在user.rb上有一个审校者,谢谢 routes.rb: Rails.application.routes.draw do root 'pages#home' devise_for :users , :path => '' , :path_names =&g

我有一个奇怪的错误,我想这是来自我应用程序的routes.rb部分。我试图给用户一个机会,当他们输入一个表单时,他们可以成为一个修改者。一个用户只能成为一次审校者,因此它的
user.rb上有一个审校者
,谢谢

routes.rb:

Rails.application.routes.draw do
  root 'pages#home'

  devise_for :users ,
             :path => '' ,
             :path_names => { :sign_in => 'login', :sign_out => 'logout', :edit => 'profile' },
             :controllers => { :omniauth_callbacks => 'omniauth_callbacks',
                              :registrations => 'registrations'
                             }

  resources :users, only: [:index, :show] do 
    resource :reviser
  end
class RevisersController < ApplicationController
  before_action :set_reviser, only: [:show, :edit, :update]
  before_action :authenticate_user!, except: [:show]

  def index
    @reviser = current_user.reviser
  end

  def show
  end

  def new
    @reviser = current_user.build_reviser(params[:reviser])
    @user = User.find(params[:user_id])
  end

  def create
    @reviser = current_user.reviser.build(reviser_params)

    if @reviser.save
      redirect_to @reviser,notice: "saved...."
    else 
      render :new
    end
  end

  def edit
    set_reviser
  end

  def update
    set_reviser

    if @reviser.update(reviser_params)
      redirect_to @reviser, notice: "updated.."
    else
      render :edit
    end
  end

  private 
  def set_reviser
    @reviser = Reviser.find(params[:id])
  end

  def reviser_params
    params.require(:reviser).permit(:description, :average_start, :average_end, :max_pages, :price_per, :active)
  end
end
Prefix Verb     URI Pattern                                        Controller#Action
                                 root GET      /                                                  pages#home
                     new_user_session GET      /login(.:format)                                   devise/sessions#new
                         user_session POST     /login(.:format)                                   devise/sessions#create
                 destroy_user_session DELETE   /logout(.:format)                                  devise/sessions#destroy
              user_omniauth_authorize GET|POST /auth/:provider(.:format)                          omniauth_callbacks#passthru {:provider=>/facebook/}
               user_omniauth_callback GET|POST /auth/:action/callback(.:format)                   omniauth_callbacks#(?-mix:facebook)
                        user_password POST     /password(.:format)                                devise/passwords#create
                    new_user_password GET      /password/new(.:format)                            devise/passwords#new
                   edit_user_password GET      /password/edit(.:format)                           devise/passwords#edit
                                      PATCH    /password(.:format)                                devise/passwords#update
                                      PUT      /password(.:format)                                devise/passwords#update
             cancel_user_registration GET      /cancel(.:format)                                  registrations#cancel
                    user_registration POST     /                                                  registrations#create
                new_user_registration GET      /sign_up(.:format)                                 registrations#new
               edit_user_registration GET      /profile(.:format)                                 registrations#edit
                                      PATCH    /                                                  registrations#update
                                      PUT      /                                                  registrations#update
                                      DELETE   /                                                  registrations#destroy
                    user_confirmation POST     /confirmation(.:format)                            devise/confirmations#create
                new_user_confirmation GET      /confirmation/new(.:format)                        devise/confirmations#new
                                      GET      /confirmation(.:format)                            devise/confirmations#show
                         user_reviser POST     /users/:user_id/reviser(.:format)                  revisers#create
                     new_user_reviser GET      /users/:user_id/reviser/new(.:format)              revisers#new
                    edit_user_reviser GET      /users/:user_id/reviser/edit(.:format)             revisers#edit
                                      GET      /users/:user_id/reviser(.:format)                  revisers#show
                                      PATCH    /users/:user_id/reviser(.:format)                  revisers#update
                                      PUT      /users/:user_id/reviser(.:format)                  revisers#update
                                      DELETE   /users/:user_id/reviser(.:format)                  revisers#destroy
                                users GET      /users(.:format)                                   users#index
                                 user GET      /users/:id(.:format)                               users#show
                               photos GET      /photos(.:format)                                  photos#index
                                      POST     /photos(.:format)                                  photos#create
                            new_photo GET      /photos/new(.:format)                              photos#new
                           edit_photo GET      /photos/:id/edit(.:format)                         photos#edit
                                photo GET      /photos/:id(.:format)                              photos#show
                                      PATCH    /photos/:id(.:format)                              photos#update
                                      PUT      /photos/:id(.:format)                              photos#update
                                      DELETE   /photos/:id(.:format)                              photos#destroy
                                pages GET      /pages(.:format)                                   pages#index
                                      POST     /pages(.:format)                                   pages#create
                             new_page GET      /pages/new(.:format)                               pages#new
                            edit_page GET      /pages/:id/edit(.:format)                          pages#edit
                                 page GET      /pages/:id(.:format)                               pages#show
                                      PATCH    /pages/:id(.:format)                               pages#update
                                      PUT      /pages/:id(.:format)                               pages#update
                                      DELETE   /pages/:id(.:format)                               pages#destroy
autocomplete_user_country_suggestions GET      /suggestions/autocomplete_user_country(.:format)   suggestions#autocomplete_user_country
   autocomplete_user_city_suggestions GET      /suggestions/autocomplete_user_city(.:format)      suggestions#autocomplete_user_city
 autocomplete_user_school_suggestions GET      /suggestions/autocomplete_user_school(.:format)    suggestions#autocomplete_user_school
  autocomplete_user_major_suggestions GET      /suggestions/autocomplete_user_major(.:format)     suggestions#autocomplete_user_major
                          suggestions GET      /suggestions(.:format)                             suggestions#index
                                      POST     /suggestions(.:format)                             suggestions#create
                       new_suggestion GET      /suggestions/new(.:format)                         suggestions#new
                      edit_suggestion GET      /suggestions/:id/edit(.:format)                    suggestions#edit
                           suggestion GET      /suggestions/:id(.:format)                         suggestions#show
                                      PATCH    /suggestions/:id(.:format)                         suggestions#update
                                      PUT      /suggestions/:id(.:format)                         suggestions#update
                                      DELETE   /suggestions/:id(.:format)                         suggestions#destroy
                conversation_messages GET      /conversations/:conversation_id/messages(.:format) messages#index
                                      POST     /conversations/:conversation_id/messages(.:format) messages#create
                        conversations GET      /conversations(.:format)                           conversations#index
                                      POST     /conversations(.:format)                           conversations#create
                        post_comments GET      /posts/:post_id/comments(.:format)                 comments#index
                                      POST     /posts/:post_id/comments(.:format)                 comments#create
                     new_post_comment GET      /posts/:post_id/comments/new(.:format)             comments#new
                    edit_post_comment GET      /posts/:post_id/comments/:id/edit(.:format)        comments#edit
                         post_comment GET      /posts/:post_id/comments/:id(.:format)             comments#show
                                      PATCH    /posts/:post_id/comments/:id(.:format)             comments#update
                                      PUT      /posts/:post_id/comments/:id(.:format)             comments#update
                                      DELETE   /posts/:post_id/comments/:id(.:format)             comments#destroy
                          post_places GET      /posts/:post_id/places(.:format)                   places#index
                                      POST     /posts/:post_id/places(.:format)                   places#create
                       new_post_place GET      /posts/:post_id/places/new(.:format)               places#new
                      edit_post_place GET      /posts/:post_id/places/:id/edit(.:format)          places#edit
                           post_place GET      /posts/:post_id/places/:id(.:format)               places#show
                                      PATCH    /posts/:post_id/places/:id(.:format)               places#update
                                      PUT      /posts/:post_id/places/:id(.:format)               places#update
                                      DELETE   /posts/:post_id/places/:id(.:format)               places#destroy
                                posts GET      /posts(.:format)                                   posts#index
                                      POST     /posts(.:format)                                   posts#create
                             new_post GET      /posts/new(.:format)                               posts#new
                            edit_post GET      /posts/:id/edit(.:format)                          posts#edit
                                 post GET      /posts/:id(.:format)                               posts#show
                                      PATCH    /posts/:id(.:format)                               posts#update
                                      PUT      /posts/:id(.:format)                               posts#update
                                      DELETE   /posts/:id(.:format)                               posts#destroy
校订者\控制员:

Rails.application.routes.draw do
  root 'pages#home'

  devise_for :users ,
             :path => '' ,
             :path_names => { :sign_in => 'login', :sign_out => 'logout', :edit => 'profile' },
             :controllers => { :omniauth_callbacks => 'omniauth_callbacks',
                              :registrations => 'registrations'
                             }

  resources :users, only: [:index, :show] do 
    resource :reviser
  end
class RevisersController < ApplicationController
  before_action :set_reviser, only: [:show, :edit, :update]
  before_action :authenticate_user!, except: [:show]

  def index
    @reviser = current_user.reviser
  end

  def show
  end

  def new
    @reviser = current_user.build_reviser(params[:reviser])
    @user = User.find(params[:user_id])
  end

  def create
    @reviser = current_user.reviser.build(reviser_params)

    if @reviser.save
      redirect_to @reviser,notice: "saved...."
    else 
      render :new
    end
  end

  def edit
    set_reviser
  end

  def update
    set_reviser

    if @reviser.update(reviser_params)
      redirect_to @reviser, notice: "updated.."
    else
      render :edit
    end
  end

  private 
  def set_reviser
    @reviser = Reviser.find(params[:id])
  end

  def reviser_params
    params.require(:reviser).permit(:description, :average_start, :average_end, :max_pages, :price_per, :active)
  end
end
Prefix Verb     URI Pattern                                        Controller#Action
                                 root GET      /                                                  pages#home
                     new_user_session GET      /login(.:format)                                   devise/sessions#new
                         user_session POST     /login(.:format)                                   devise/sessions#create
                 destroy_user_session DELETE   /logout(.:format)                                  devise/sessions#destroy
              user_omniauth_authorize GET|POST /auth/:provider(.:format)                          omniauth_callbacks#passthru {:provider=>/facebook/}
               user_omniauth_callback GET|POST /auth/:action/callback(.:format)                   omniauth_callbacks#(?-mix:facebook)
                        user_password POST     /password(.:format)                                devise/passwords#create
                    new_user_password GET      /password/new(.:format)                            devise/passwords#new
                   edit_user_password GET      /password/edit(.:format)                           devise/passwords#edit
                                      PATCH    /password(.:format)                                devise/passwords#update
                                      PUT      /password(.:format)                                devise/passwords#update
             cancel_user_registration GET      /cancel(.:format)                                  registrations#cancel
                    user_registration POST     /                                                  registrations#create
                new_user_registration GET      /sign_up(.:format)                                 registrations#new
               edit_user_registration GET      /profile(.:format)                                 registrations#edit
                                      PATCH    /                                                  registrations#update
                                      PUT      /                                                  registrations#update
                                      DELETE   /                                                  registrations#destroy
                    user_confirmation POST     /confirmation(.:format)                            devise/confirmations#create
                new_user_confirmation GET      /confirmation/new(.:format)                        devise/confirmations#new
                                      GET      /confirmation(.:format)                            devise/confirmations#show
                         user_reviser POST     /users/:user_id/reviser(.:format)                  revisers#create
                     new_user_reviser GET      /users/:user_id/reviser/new(.:format)              revisers#new
                    edit_user_reviser GET      /users/:user_id/reviser/edit(.:format)             revisers#edit
                                      GET      /users/:user_id/reviser(.:format)                  revisers#show
                                      PATCH    /users/:user_id/reviser(.:format)                  revisers#update
                                      PUT      /users/:user_id/reviser(.:format)                  revisers#update
                                      DELETE   /users/:user_id/reviser(.:format)                  revisers#destroy
                                users GET      /users(.:format)                                   users#index
                                 user GET      /users/:id(.:format)                               users#show
                               photos GET      /photos(.:format)                                  photos#index
                                      POST     /photos(.:format)                                  photos#create
                            new_photo GET      /photos/new(.:format)                              photos#new
                           edit_photo GET      /photos/:id/edit(.:format)                         photos#edit
                                photo GET      /photos/:id(.:format)                              photos#show
                                      PATCH    /photos/:id(.:format)                              photos#update
                                      PUT      /photos/:id(.:format)                              photos#update
                                      DELETE   /photos/:id(.:format)                              photos#destroy
                                pages GET      /pages(.:format)                                   pages#index
                                      POST     /pages(.:format)                                   pages#create
                             new_page GET      /pages/new(.:format)                               pages#new
                            edit_page GET      /pages/:id/edit(.:format)                          pages#edit
                                 page GET      /pages/:id(.:format)                               pages#show
                                      PATCH    /pages/:id(.:format)                               pages#update
                                      PUT      /pages/:id(.:format)                               pages#update
                                      DELETE   /pages/:id(.:format)                               pages#destroy
autocomplete_user_country_suggestions GET      /suggestions/autocomplete_user_country(.:format)   suggestions#autocomplete_user_country
   autocomplete_user_city_suggestions GET      /suggestions/autocomplete_user_city(.:format)      suggestions#autocomplete_user_city
 autocomplete_user_school_suggestions GET      /suggestions/autocomplete_user_school(.:format)    suggestions#autocomplete_user_school
  autocomplete_user_major_suggestions GET      /suggestions/autocomplete_user_major(.:format)     suggestions#autocomplete_user_major
                          suggestions GET      /suggestions(.:format)                             suggestions#index
                                      POST     /suggestions(.:format)                             suggestions#create
                       new_suggestion GET      /suggestions/new(.:format)                         suggestions#new
                      edit_suggestion GET      /suggestions/:id/edit(.:format)                    suggestions#edit
                           suggestion GET      /suggestions/:id(.:format)                         suggestions#show
                                      PATCH    /suggestions/:id(.:format)                         suggestions#update
                                      PUT      /suggestions/:id(.:format)                         suggestions#update
                                      DELETE   /suggestions/:id(.:format)                         suggestions#destroy
                conversation_messages GET      /conversations/:conversation_id/messages(.:format) messages#index
                                      POST     /conversations/:conversation_id/messages(.:format) messages#create
                        conversations GET      /conversations(.:format)                           conversations#index
                                      POST     /conversations(.:format)                           conversations#create
                        post_comments GET      /posts/:post_id/comments(.:format)                 comments#index
                                      POST     /posts/:post_id/comments(.:format)                 comments#create
                     new_post_comment GET      /posts/:post_id/comments/new(.:format)             comments#new
                    edit_post_comment GET      /posts/:post_id/comments/:id/edit(.:format)        comments#edit
                         post_comment GET      /posts/:post_id/comments/:id(.:format)             comments#show
                                      PATCH    /posts/:post_id/comments/:id(.:format)             comments#update
                                      PUT      /posts/:post_id/comments/:id(.:format)             comments#update
                                      DELETE   /posts/:post_id/comments/:id(.:format)             comments#destroy
                          post_places GET      /posts/:post_id/places(.:format)                   places#index
                                      POST     /posts/:post_id/places(.:format)                   places#create
                       new_post_place GET      /posts/:post_id/places/new(.:format)               places#new
                      edit_post_place GET      /posts/:post_id/places/:id/edit(.:format)          places#edit
                           post_place GET      /posts/:post_id/places/:id(.:format)               places#show
                                      PATCH    /posts/:post_id/places/:id(.:format)               places#update
                                      PUT      /posts/:post_id/places/:id(.:format)               places#update
                                      DELETE   /posts/:post_id/places/:id(.:format)               places#destroy
                                posts GET      /posts(.:format)                                   posts#index
                                      POST     /posts(.:format)                                   posts#create
                             new_post GET      /posts/new(.:format)                               posts#new
                            edit_post GET      /posts/:id/edit(.:format)                          posts#edit
                                 post GET      /posts/:id(.:format)                               posts#show
                                      PATCH    /posts/:id(.:format)                               posts#update
                                      PUT      /posts/:id(.:format)                               posts#update
                                      DELETE   /posts/:id(.:format)                               posts#destroy

您的
:reviser
路线有一个单一的资源定义。这对于您尝试执行的操作是有意义的,但是,
表单为[current\u user,@reviser]
生成的路由将尝试生成一个包含
:user\u id
:id
的路由,以识别您的修订者

因此,在您的案例中没有定义
:id
字段,因为
资源:修订者
不会创建
:id

解决方案是在
表单中为
显式地将url设置为您想要的路由:

它应该是大致如下的东西:

form_for @reviser, url: edit_user_reviser_path(user_id: current_user.id)
代码的更大问题是,您仍然通过控制器中的
id
直接引用修订者。在当前路由设置下,这将在
Reviser.find()方法上返回一个错误。但是,更重要的是,这会带来安全问题,因为恶意用户可能会在补丁请求中发送
id
param来劫持和更新属于另一个用户的记录

一个简单的解决方案是直接在当前用户上引用reviser对象

def set_reviser
  @reviser = current_user.reviser
end

你能展示你的
rake路由的输出吗
?哈哈,当我发布它们时,rake路由看起来不太好。有没有更好的方法,或者只向你展示校订路线?哇!谢谢你的提示!!我不想要任何恶意用户!!