我想了解设计current_user方法的工作原理,因为我想将其推广到其他模型,这些模型将允许使用诸如current_forum或current_forum_thread之类的代码。

更具体地说,我正在尝试在Rails中实现一个聊天论坛。我有一个页面显示特定讨论线程的所有帖子(当前没有)。该页面上嵌入了新的帖子形式。调试(参数)显示:

action: show
controller: discussions
forum_id: '1'
id: '1'

discussion: !ruby/object:Discussion
  attributes:
    id: 1
    title: first discussion (thread)
    forum_id: 1


因此,posts控制器中的create方法应该知道讨论ID是什么。但是控制器中的此代码不起作用。

  1. @discussion = Discussion.find(params[:id])
  2. @post = @discussion.posts.new(params[:post])
  3. if @post.save
  4.  flash[:success] = "Discussion post created!"
  5.  redirect_to '#'
  6. else
  7.  render '#'
  8. end


第1行引发错误:

Couldn't find Discussion without an ID


另外,检查后发现@discussion变量始终为NIL。

最佳答案

我认为这更像是一个辅助函数,devise的方式是通过会话获取ID,但是您可以通过params哈希来完成此操作,


module ApplicationHelper
  def current_forum_thread
   Thread.find(params[:id])
  end
end


那对你有用吗?

关于ruby-on-rails - 如何设计current_user?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14548293/

10-10 10:52