无法将ID传递给嵌套路由

时间:2016-12-03 13:45:50

标签: ruby-on-rails routes

为了个人成就,我试图创建一个在线杂志,让人们阅读一些新闻

我创建了两个支架,一个用于漫画,另一个用于其页面。我设法创建杂志,通过多上传系统上传其页面,这要归功于第二个脚手架。

然后,我希望杂志页面的链接看起来像domain.net/magazines/:id/pages/:id,但是,我遇到了一些我似乎无法解决的困难。自己

这是我的杂志#show view:

<h4>
  <%= @magazine.titre %>
</h4>

  <%= image_tag @magazine.apercu, size: '200x200' %>

<% @magazine.pages.each do |m| %>
    <%= link_to magazine_page_url, :id => m.id do %> <!-- Here -->
      <%= image_tag m.image, size: '100x100' %>
    <% end %>

    <%= link_to m do %>
        <%= image_tag p.image, size: '100x100' %>
    <% end %>

    <%= link_to 'Supprimer', m, :method => :delete, data: {confirm: 'Are you sure?'} %>
<% end %>

<br />

<%= link_to 'Edit', edit_magazine_path(@magazine) %> |
<%= link_to 'Back', magazines_path %>

每当我尝试访问此页面时,我都会收到以下错误:

杂志中的

ActionController :: UrlGenerationError#show - 没有路由匹配{:action =&gt;&#34; show&#34;,:controller =&gt;&#34; pages&#34;,:id =&gt;&#34; 6&#34;}缺少必需的密钥:[:magazine_id]

正如您所看到的,我尝试在每个杂志的页面周围创建链接以重定向到页面本身,但我无法为链接提供正确的ID。

当我尝试将<%= link_to m do %>代替magazine_page_url时,他正在搜索名为&#39; page_path&#39;的路径,因为我嵌套后不存在我的杂志资源中的页面资源。

以下是我的路线档案以防万一,如果您需要查看其他内容,请不要犹豫

Rails.application.routes.draw do
root to: 'home#index'

  namespace :admin do
    resources :carousels
  end
  get '/admin' => 'admin#index', as: :admin_root

  resources :magazines do
    resources :pages
  end

end

欢迎任何帮助

提前谢谢

1 个答案:

答案 0 :(得分:1)

将杂志和页面实例传递到url params:

<%= link_to magazine_page_url(@magazine, m) do

你可以这样做:

<%= link_to [@magazine, m] do