在RubyonRails中创建方法问题



我有一个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

看看嵌套模型表单,它应该会让你朝着正确的方向前进。

相关内容

  • 没有找到相关文章

最新更新