Rails的路由错误-未初始化的常量SubscribersController

按位

我有一个Subscriber接受“ phone_number”和“ visit”整数的模型。我有两个控制器SubscribersVisits(超级和子控制器)我以前从未使用过嵌套控制器,并且我相信名称空间存在一些问题。因为我找回了未初始化的常量错误。基本上,订户控制器签约一个订户,而访问控制器则通过用户输入他们的phone_number来计数他们已被访问的次数。为什么会出现此错误?为了清楚起见,我将显示我的代码。

控制器

  class Subscribers::VisitsController < ApplicationController
   def new
    @subscriber = Subscriber.new
   end

   def create
    @subscriber = Subscriber.find_by_phone_number(params[:phone_number])
    if @subscriber
     @subscriber.visit += 1
     @subscriber.save
     redirect_to subscribers_visits_new_path(:subscriber)
    else
    render "new"
    end
   end
 end


   class SubscribersController < ApplicationController
 def index
  @subscriber = Subscriber.all
 end

 def new
  @subscriber = Subscriber.new
 end

 def create
  @subscriber = Subscriber.create(subscriber_params)
  if @subscriber.save
    flash[:success] = "Subscriber Has Been successfully Created"
    redirect_to new_subscriber_path(:subscriber)
  else
    render "new"
  end
 end

路线

  Rails.application.routes.draw do
  devise_for :users
  resources :subscribers, except: :show
  get '/subscribers/visits/new', to: 'subscribers/visits#new'


  root "welcomes#index"

意见

  <h1>hey</hey>

  <%= form_for @subscriber do |form| %>
   <div class="form-group">
   <p>
   <%= form.label :phone_number %>
   <%= form.text_field :phone_number %>
   </p>
  <% end %>

错误

在此处输入图片说明

迈克尔·加斯基尔

您可能不需要从另一个继承一个控制器。只需像通常那样定义控制器即可:

app / controllers / subscribers_controller.rb

class SubscribersController < ApplicationController
  # methods for Subscribers
end

在app / controllers / visits_controller.rb中

class VisitsController < ApplicationController
  # methods for Visits
end

请注意,这些文件必须位于单独的文件中,以便Rails可以根据要查找的对象的名称找到正确的源文件。这是Rails的命名约定。

关于您的路线,您需要更改为使用4种路线格式之一。阅读“从外部进入Rails的路由”指南中有关添加更多RESTful操作的部分可能会有所帮助。

1)要将其visits作为嵌套资源进行路由,这实际上就是您要尝试执行的操作,请使用以下命令:

resources :subscribers, except: :show do
  resources :visits
end

这将产生以下路线:

GET    /subscribers/new
POST   /subscribers
GET    /subscribers
GET    /subscribers/:id/edit
PATCH  /subscribers/:id/update
DELETE /subscribers/:id/destroy
GET    /subscribers/:id/visits/new
POST   /subscribers/:id/visits
GET    /subscribers/:id/visits
GET    /subscribers/:id/visits/:id
GET    /subscribers/:id/visits/:id/edit
PATCH  /subscribers/:id/visits/:id/update
DELETE /subscribers/:id/visits/:id/destroy

这是嵌套资源和单独控制器的典型路由结构。

2)visits#new在VisitsController中进行简单的集合(非成员)操作,则可能需要这样做:

resources :subscribers, except: :show do
  collection do
    get 'visits/new', to 'visits#new'
    post 'visits', to 'visits#create'
  end
end

这将产生以下路线:

GET    /subscribers/new
POST   /subscribers
GET    /subscribers
GET    /subscribers/:id/edit
PATCH  /subscribers/:id/update
DELETE /subscribers/:id/destroy
GET    /subscribers/visits/new
POST   /subscribers/visits

这通常用于在现有资源和控制器中添加新的顶级路由。

3)要构造visits为成员动作,请使用以下命令:

resources :subscribers, except: :show do
  member do
    get 'visits/new', to 'visits#new'
    post 'visits', to 'visits#create'
  end
end

这将产生以下路线:

GET    /subscribers/new
POST   /subscribers
GET    /subscribers
GET    /subscribers/:id/edit
PATCH  /subscribers/:id/update
DELETE /subscribers/:id/destroy
GET    /subscribers/:id/visits/new
POST   /subscribers/:id/visits

这通常用于在现有资源和控制器中添加新的成员路由。

4)要简单地使visits路由似乎包含在中subscribers,您可以使用以下方法:

get '/subscribers/visits/new', to: 'visits#new'
post '/subscribers/visits', to: 'visits#create'
resources :subscribers, except: :show

这将产生以下路线:

GET    /subscribers/visits/new
POST   /subscribers/visits
GET    /subscribers/new
POST   /subscribers
GET    /subscribers
GET    /subscribers/:id/edit
PATCH  /subscribers/:id/update
DELETE /subscribers/:id/destroy

当它们实际上可能是独立的时,这可以用于使任意路由似乎包含在现有资源中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails的路由错误-未初始化的常量SubscribersController

来自分类Dev

Rails路由错误未初始化的常量

来自分类Dev

Rails:路由错误:未初始化的常量SessionController

来自分类Dev

Rails:路由错误未初始化的常量 RegistrationsController

来自分类Dev

Rails路由“未初始化的常量CoursesController”

来自分类Dev

Rails路由:未初始化的常量ClanController

来自分类Dev

使用间隙的“未初始化的常量”路由错误

来自分类Dev

路由错误未初始化的常量ArticleController

来自分类Dev

未初始化的常量 SubscribersController

来自分类Dev

NameError:未初始化的常量(rails)

来自分类Dev

Rails关联的未初始化常量

来自分类Dev

Rails路由错误:控制器中未初始化的常量

来自分类Dev

Rails错误未初始化常量导入csv

来自分类Dev

Rails-Sidekiq错误未初始化的常量

来自分类Dev

Rails多态关联未初始化的常量错误

来自分类Dev

Ruby on Rails“未初始化的常量”错误

来自分类Dev

Rails显示错误“未初始化的常量URI :: Generic”

来自分类Dev

Rails-Sidekiq错误未初始化的常量

来自分类Dev

Ruby on Rails“未初始化的常量”错误

来自分类Dev

Rails路由错误“未初始化的常数”

来自分类Dev

实例化类时,Rails未初始化的常量

来自分类Dev

Rails,未初始化的常量Rails入门

来自分类Dev

Rails 4未初始化的常量Admin :: Category

来自分类Dev

Rspec / Rails:未初始化的常量ActiveSupport :: Autoload(NameError)

来自分类Dev

来自Gem的Rails中的未初始化常量

来自分类Dev

Rails:NameError:未初始化的常量Sidekiq :: RetrySet

来自分类Dev

Rails模型-NameError:未初始化的常量

来自分类Dev

rails未初始化的常量Sprockets :: SassCacheStore

来自分类Dev

Sidekiq WARN:未初始化的常量ViewDBWorker Rails 4

Related 相关文章

  1. 1

    Rails的路由错误-未初始化的常量SubscribersController

  2. 2

    Rails路由错误未初始化的常量

  3. 3

    Rails:路由错误:未初始化的常量SessionController

  4. 4

    Rails:路由错误未初始化的常量 RegistrationsController

  5. 5

    Rails路由“未初始化的常量CoursesController”

  6. 6

    Rails路由:未初始化的常量ClanController

  7. 7

    使用间隙的“未初始化的常量”路由错误

  8. 8

    路由错误未初始化的常量ArticleController

  9. 9

    未初始化的常量 SubscribersController

  10. 10

    NameError:未初始化的常量(rails)

  11. 11

    Rails关联的未初始化常量

  12. 12

    Rails路由错误:控制器中未初始化的常量

  13. 13

    Rails错误未初始化常量导入csv

  14. 14

    Rails-Sidekiq错误未初始化的常量

  15. 15

    Rails多态关联未初始化的常量错误

  16. 16

    Ruby on Rails“未初始化的常量”错误

  17. 17

    Rails显示错误“未初始化的常量URI :: Generic”

  18. 18

    Rails-Sidekiq错误未初始化的常量

  19. 19

    Ruby on Rails“未初始化的常量”错误

  20. 20

    Rails路由错误“未初始化的常数”

  21. 21

    实例化类时,Rails未初始化的常量

  22. 22

    Rails,未初始化的常量Rails入门

  23. 23

    Rails 4未初始化的常量Admin :: Category

  24. 24

    Rspec / Rails:未初始化的常量ActiveSupport :: Autoload(NameError)

  25. 25

    来自Gem的Rails中的未初始化常量

  26. 26

    Rails:NameError:未初始化的常量Sidekiq :: RetrySet

  27. 27

    Rails模型-NameError:未初始化的常量

  28. 28

    rails未初始化的常量Sprockets :: SassCacheStore

  29. 29

    Sidekiq WARN:未初始化的常量ViewDBWorker Rails 4

热门标签

归档