Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails中的范围问题_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails中的范围问题

Ruby on rails Rails中的范围问题,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我是rails新手,在范围方面有问题。我有两门课,Post和Story。Post的每个实例都是使用Story show页面上表单中的数据创建的。Post的一个参数是创建它的故事实例的id。我不知道如何获取此id。@story为零,即使我在控制器中的def show下将其定义为@story=story.find(params[:id]) 谢谢 这实际上取决于您在哪里创建帖子,以及控制器的路由。我希望这是一个PostsController,而不是StoriesController,因为它不属于后者

我是rails新手,在范围方面有问题。我有两门课,Post和Story。Post的每个实例都是使用Story show页面上表单中的数据创建的。Post的一个参数是创建它的故事实例的id。我不知道如何获取此id。@story为零,即使我在控制器中的
def show
下将其定义为
@story=story.find(params[:id])


谢谢

这实际上取决于您在哪里创建帖子,以及控制器的路由。我希望这是一个PostsController,而不是StoriesController,因为它不属于后者

因此,假设您使用的是PostsController,最好的方法(假设每篇文章都与一个故事相关,听起来是这样),就是将此控制器嵌套在
routes.rb文件中的故事中:

resources :stories do
  resources :posts
end
然后,在
params[:story\u id]
中可以使用故事id(假定表单设置正确),并且创建可以如下所示:

story = Story.find params[:story_id]
post  = story.posts.create params[:post]

在这里进行一些假设,但希望这会有所帮助。

Story.find()应该在没有找到记录的情况下引发ActiveRecord::RecordNotFound。既然这似乎不是正在发生的事情,你应该在你的问题中具体说明你想做什么。这正是我想要的,谢谢。我怀疑嵌套的资源会起作用,但我现在发现
没有路由匹配{:action=>“create”,:controller=>“posts”}
。这指向我表单的这一行:
。我现在该怎么申报呢?我确实使用了正确的控制器。您会希望表单知道嵌套:
完美。我想我必须做一些类似的事情,但不确定语法。非常感谢,现在一切都好了。