0

我一直在尝试通过 Rails 中的会话创建一个访客,没有任何用户模型或设计等,我只想要一个通过单击创建的访客。

客人然后有一系列偏好步骤(使用 Wicked gem)

我创建了一个 Guest 模型,它只需在第一次单击时创建一个新的来宾。

我试图启动控制器的首选项的每一步:

 @guest = current_user

我已将以下代码添加到“current_user”的应用程序控制器中

 def current_user
    @_current_user ||= session[:current_user_id] &&
    Guest.find_by_id(session[:current_user_id])
 end

这是创建来宾的操作:

def start
    @guest = Guest.create
      if @guest.save
     session[:guest_id] = @guest.id
     redirect_to would_you_rather_path(:goalkeeper)
    end
 end

我遇到的问题是调用 @guest = current_user 返回 nil,我相信这意味着 current_user 方法不适合我的应用程序。

我需要将访客会话称为每个步骤的开始。

感谢任何帮助/指导

谢谢

4

1 回答 1

1

start行动中,您正在设置session[:guest_id]并且current_user您正在尝试通过session[:current_user_id]. 我会回来nil的。

current_user应该是这样的:

def current_user
  @_current_user ||= Guest.find_by_id(session[:current_user_id]) if session[:current_user_id]
end

start应该是这样的:

def start
    @guest = Guest.create
    if @guest.save
      session[:current_user_id] = @guest.id
      redirect_to would_you_rather_path(:goalkeeper)
    end
 end

还有一件事,我们应该总是尝试使用 rails 提供的默认 7 动作,你应该使用createaction 而不是start.

于 2013-07-26T08:37:11.333 回答