【问题标题】:Redirecting in rails 'uninitialized constant MembersController' error在 Rails 中重定向“未初始化的常量 MembersController”错误
【发布时间】:2014-07-28 19:29:30
【问题描述】:

我有一个使用设计 gem 的应用程序。我有两个模型,分别是成员和旅行。每个成员都有一次旅行。会员登录或注册后,我希望他们被重定向到他们可以创建旅行的旅行新页面。我有它重定向,但它没有携带 url 中的成员 ID,我不知道该怎么做。我已经尝试了所有我知道的方法,现在我得到了一个成员控制器错误,即使我生成了一个它仍然不起作用。不确定设计是否与此有关。

这是控制器,其方法确定某人注册后会发生什么

class RegistrationsController < Devise::RegistrationsController
protected

    def after_sign_up_path_for(resource)
      new_member_trip_path(current_member.id)
    end
end

这些是 rake 路线

 new_member_trip GET    /members/:member_id/trip/new(.:format)      trip#new

【问题讨论】:

    标签: ruby-on-rails ruby devise crud


    【解决方案1】:

    试试这样的

    def after_sign_up_path_for(resource)
      "/members/#{current_member.id}/trip/new"
    end
    

    但我认为更好的方法是调用new_member_trip_path

    编辑:好的,我检查了它,它对我有用:

      def after_sign_up_path_for(resource)
        #log in after register
        after_sign_in_path_for(resource)
      end
    
      def after_sign_in_path_for(resource)
        #redirect to new trip page after log in
        new_member_trip_path(current_member)
      end
    

    【讨论】:

    • 我该如何使用 new_member_trip_path 呢??
    • 当我执行此操作时,我在 RegistrationsController#create 中收到“NoMethodError”:url_for new_member_trip(current_member)
    • 因为我忘记了_path,所以url_for也没有必要。 (已编辑)
    • 太棒了!谢谢你。你是怎么想出来的?已经为此工作了一个小时......为什么我什至需要: after_sign_in_path_for(resource) ?我想我可以说:new_member_trip_path(current_member)
    • 我很高兴能帮上忙。默认情况下,设计在注册后不会登录,因此您无法引用当前用户的 ID(或您的情况下的成员)。在after_sign_up 中调用after_sign_in 可能看起来有点奇怪,但它可以解决。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2016-07-15
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多