【问题标题】:Nested Ressources in Ruby on RailsRuby on Rails 中的嵌套资源
【发布时间】:2023-03-29 11:23:01
【问题描述】:

这实际上应该是非常微不足道的,但我遇到了奇怪的问题。

我正在开发一个游戏数据库,用户可以在其中绘制游戏条目并为这些评论撰写评论。当然,评论 URL(显示视图)必须依赖于游戏的 id,例如 localhost:3000/games/1/reviews/2

这些是我的路线

resources :games do
  resources :reviews
end

我想打开评论的显示视图

<%= link_to "zum Review", game_review_path(@game, @review) %>

这是所有基本的教程内容。

但我只收到一个路由错误。改用这种方法

url_for([@game, @review])

至少不会导致路由错误,但是打开的不是rev​​iews show-view,而是游戏的show view,也就是这个链接实际放置的地方!

我的模型关联设置正确,我的控制器操作都是基本的教程内容。我做错了什么?

【问题讨论】:

  • 你重启服务器了吗?

标签: ruby-on-rails ruby resources routes nested


【解决方案1】:

在您的 erb 文件中,尝试在左侧参数中传递局部变量,并在右侧字段中传递嵌套模型的名称。如果您使用 2 个局部变量,您将收到路由错误。 @game 是局部变量,并且评论嵌套在游戏下,因此下面的代码应该可以解决您的问题。

试试:

<%= link_to "zum Review", game_review_path(@game, review) %>

【讨论】:

  • 如果您在此答案中添加一些上下文,这对@SirJay 会更有用,因为这对问题有点猜测。如果它是正确的,那么 OP 可以使用更多的解释来避免再次发生同样的错误。
  • 成功了!现在,链接将我引导至正确的 reivew 节目......非常感谢!但我有两个再问两个问题。为什么它会这样工作?我的意思是我的教程书和 ruby​​rails.org 上的指南告诉你使用两个局部变量......你的工作解决方案已经完成了这些教程......而且(更重要的是)我的帮助路径“game_review_path”只工作,因为我使用在我的路线中获得“games/:game_id/reviews/:id”=>“reviews#show”,如:“review”。但是这条路线不应该已经包含在我的嵌套资源中了吗?没有这个我的 review_Path 方法是未定义的。但为什么呢?
猜你喜欢
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多