为了个人成就,我试图创建一个在线杂志,让人们阅读一些新闻
我创建了两个支架,一个用于漫画,另一个用于其页面。我设法创建杂志,通过多上传系统上传其页面,这要归功于第二个脚手架。
然后,我希望杂志页面的链接看起来像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
欢迎任何帮助
提前谢谢
答案 0 :(得分:1)
将杂志和页面实例传递到url params:
<%= link_to magazine_page_url(@magazine, m) do
你可以这样做:
<%= link_to [@magazine, m] do