我有一个rails应用程序,它涉及用户、文章和排名。这很简单,但我对铁路很陌生。我现在遇到的问题是排名的创建方法。
论文类has_many :rankings
和排名类belongs_to :essay
在排名控制器我有:
def create
@ranking = @essay.rankings.build(params[:ranking])
flash[:success] = "Ranking created!"
redirect_to root_path
end
但我得到了错误:nil的未定义方法"ranking":NilClass
我需要每个排名都有一个essay_id
,我相信build
会为我更新这个
我认为rails之所以给我排名方法,是因为我设置了关系,为什么@essay
为零?
提前感谢
Build不保存。您应该先使用new
,然后使用save
。我会给你提供示例代码,但你还没有真正给我们一个清楚的画面。@essay
实例变量在定义之前就已经被使用了,我真的不确定你的应用程序是如何确定排名属于哪篇文章的。
你可能想读一下Rails指南。
我认为这就是您想要做的:
# EssayController#new
def new
@essay = Essay.new(params[:essay])
@ranking = @essay.rankings.build(params[:ranking])
#...
end
看看嵌套模型表单,它应该会让你朝着正确的方向前进。