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