Rails嵌套资源绑定到控制器

时间:2016-12-09 03:03:22

标签: ruby-on-rails ruby-on-rails-5

在我的应用中,网站有很多页面。我正在尝试将我的网址设置为

example.com/websites/1/pagename

我想要它,因此页面名称不需要全局唯一。他们只需要在他们所属的网站中保持独特。

这是我的路线到目前为止的样子

resources :websites do
    resources :pages, :path => ''
end

更新

我通过在页面控制器中更改此行来实现它。

def show
    @page = Page.find_by(website_id: params[:website_id], id: params[:id])
end

然而,我更新了该行以使用友情ID ...

def show
    @page = Page.friendly.find_by(website_id: params[:website_id], id: params[:id])
end

现在我收到错误undefined method name for nil:NilClass,因为我有<% provide(:title, @page.name) %>

1 个答案:

答案 0 :(得分:1)

不,你不需要。

要与命名空间一起使用的rails g controller websites/pages

您的网址:websites/1 id = 1是唯一的。每个网站的pagename也是唯一的

=&GT; websites/1/pagename是唯一的

这很好:

websites/1/page_about_author

websites/2/page_about_author