【问题标题】:Devise routes /:param not working设计路线/:参数不起作用
【发布时间】:2012-06-10 16:36:03
【问题描述】:

使用设计 2.1.0
我正在尝试向new registration 页面发送PricingPlan 模型。
所以在我的路线中,我有:

devise_scope :user do
    delete "/logout" => "devise/sessions#destroy"
    get "/login" => "devise/sessions#new"
    get "/signup/:plan" => "devise/registrations#new"
  end

我重写了设计注册控制器。在我的 routes.rb 中使用它以使其工作:

devise_for :users, :controllers => {:registrations => "registrations"}

在我的 实际 注册控制器中,它覆盖了 Devise 的控制器:

class RegistrationsController < Devise::RegistrationsController
  view_paths = "app/views/devise"
  def new
    super
    @plan = PricingPlan.find_by_name(params[:plan])
  end

所以默认视图仍然可以设计......
registration 控制器的new 视图中,我称之为:

<h3>You've chosen the <%= @plan.name %> plan.</h3>

我得到这个错误:

undefined method `name' for nil:NilClass

另外...在我的PricingPlan 模型中:

class PricingPlan < ActiveRecord::Base
  has_many :users

在我的User 模型中:

class User < ActiveRecord::Base
  belongs_to :pricing_plan

我对 Rails 比较陌生。

【问题讨论】:

    标签: ruby-on-rails activerecord devise


    【解决方案1】:

    由于某种原因,您的@plan 是空的...

    尝试更改下面的行以确保您找到计划...

    @plan = PricingPlan.find_by_id(1)
    

    如果是这样,您可能试图通过错误的参数来查找...您的数据库中有“计划”列吗?

    @plan = PricingPlan.find_by_name(params[:______]) 
    

    【讨论】:

    • 你的回答帮助我朝着正确的方向前进,我真的很感激。
    【解决方案2】:

    当我在我的注册控制器中执行raise 时,我意识到当我点击/signup/:plan 时,它并没有点击我从设计registration controller 中获得的registrations controller
    我找出原因:
    因为我已经制作了自己的控制器,所以范围不再是设计范围...

    所以这是错误

    get "/signup/:plan" => "devise/registrations#new"
    

    然而这是正确的

    get "/signup/:plan" => "registrations#new"
    

    所以我的部分路线看起来像这样:

      devise_scope :user do
        delete "/logout" => "devise/sessions#destroy"
        get "/login" => "devise/sessions#new"
        get "/signup/:plan" => "registrations#new"
      end
    

    代码中的其他内容保持不变。 感谢@gabrielhilal 让我找到控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多