【发布时间】:2010-08-02 06:51:11
【问题描述】:
我有一个线程模型,它有一个show 页面,在该操作的视图代码中我有:
<%= render 'comments/form' %>
初始化新评论的正确方法是什么?我试过了:
-
@comment = @thread.comments.build(params[:comment])在评论创建操作和评论表单的查看代码中。 - 线程辅助方法和模型方法称为
this_thread。 - 在线程的
show控制器代码中初始化@comment。
所有这些尝试都导致 nil 对象错误或未定义方法错误。
最后,我应该走哪条路?
更新
为了澄清,
- 我在线程控制器中创建了一个新注释。
@comment = @thread.comments.build - 在评论
create操作中,如何访问我在线程控制器中创建的@comment?
更新 #2
评论控制器:
def create
thread = Thread.find(params[:id])
@comment = thread.comments.build(params[:thread])
if @comment.save
...
end
给我这个错误:
Couldn't find Thread without an ID
你知道为什么吗?我假设它与 params[:id] 作为评论 ID 而不是线程 ID 有关。那么,我如何获得线程 ID?或者,我忘记依赖什么 Rails 魔法了,因为这是 has_many/belongs_to 关系。
【问题讨论】:
-
您为什么要在评论控制器的创建操作中访问已经创建的评论?如果它已经创建,那么该操作还需要做什么?
-
rspeicher,评论是由
build创建的,但这只会设置评论的thread_id。我还需要填写作者、标题、内容等。
标签: ruby-on-rails ruby