非常初学的RoR路由(新的动态URL)

时间:2014-07-23 19:05:34

标签: ruby-on-rails ruby rails-routing

我已经完成了" getting started" Rails教程,我试图更好地理解路由,以便我可以扩展示例项目。 (我已经阅读了this路由指南,但没有完全理解它 - 我认为我尝试做的事情比那里的内容更简单。)

以示例博客项目为基础,我试图添加查看给定作者的所有条目的功能。我修改了原始项目,以便" author"是数据库中的一个字段,可以在索引中访问(以及"标题"和"文本")(我可以调用@ book.author),我想通了在一个单独的页面上列出所有作者和主题的(可能是非常hacky和不正确的)方式,但我无法设置一种过滤作者的文章的方式。

以"显示"的方式相同示例项目中的链接将文章ID传递给控制器​​并给出具有该id的文章的视图,我希望能够为每个作者提供类似的链接,该链接将:author字段的内容传递给控制器获取分享该作者的所有文章。

(我在一个非常纠结的兔子洞里手动设置一个单独的控制器,用于"作者"并尝试在routes.rb文件中创建一个gets "authors/:author"行。创建控制器和a查看我可以列出作者自己的工作,但任何尝试使用:author(或:id)作为参数设置路线(以便每个作者都有一个列出他的文章的页面)都没有工作 - 不是确定为什么看起来,它看起来像我在路线指南中所显示的那样(上图)。但我很确定这是这样做的方式,所以我和#39; m重新开始尝试正确行事。)

(我希望这个问题不是太笼统。我假设这里的答案非常简单 - 我还没有能够从明显的文档或教程中找到答案我见过。)

1 个答案:

答案 0 :(得分:2)

它通常是一个简单的嵌套资源......

resources :authors do
  resources :articles 
end

这为您提供了一条路线authors /:author_id / articles(名为author_articles_path(@author)

在您的文章索引控制器中,您可以这样做..

def index
  @author = Author.find(param[:author_id])
  @articles = @author.articles
end

希望这会有所帮助。