我想了解设计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/