NoMethodError in VideosController#update
undefined method `each' for #<Topic:0x1032ee330>
这是应用程序跟踪:
app/models/video.rb:19:in `assign_topics'
app/controllers/videos_controller.rb:41:in `update'
app/controllers/videos_controller.rb:40:in `update'
这是我assign_topics
方法:
def assign_topics
if @topic_names
self.topics = Topic.find_or_create_by_name(@topic_names)
end
end
请注意,我跟随这名:http://media.railscasts.com/videos/167_more_on_virtual_attributes.mov
这是视频控制LER的更新方法:
def update
@video = current_user.videos.find(params[:id])
respond_to do |format|
if @video.update_attributes(params[:video])
format.html { redirect_to(@video, :notice => 'Video was successfully updated.') }
else
format.html { render :action => "edit" }
end
end
end
我如何才能找到这个'。每()'在我的代码?我没有看到我在做什么...... – 2011-03-31 21:01:58
从你的变量名称判断,“@ topic_names”包含一个数组,你不能传递给'find_or_create_by_ *' – 2011-03-31 21:03:38
是的...我尝试了类似这个:self.topics = @ topic_names.each do | name | Topic.find_or_create_by_name(名称) 结束 – 2011-03-31 21:07:14