我觉得解决这个问题的方法实际上很简单,但我无法弄清楚。
https://github.com/kingdavidek/StuddyBuddy
我正在写一个应用程序来帮助我总结非小说类书籍。我想对这本书(或作品)有一个看法,然后与章节/节有一对多的关系,其中每个节都有自己的观点。我还希望能够创建与各节等具有多对一关系的各节。
因此,这将是一种树状结构,其中每个较小的部分都有其自己的摘要。(我基本上遵循的是Jumpstart Lab Blogger项目,但要对其进行调整以适合我自己的使用。http://tutorials.jumpstartlab.com/projects/blogger.html#blogger-2)
我已经能够成功创建作品的视图并链接到各部分。我从Jumpstart教程中的注释开始讨论这一部分,其中注释与Articles具有多对一关系,并且注释显示在父文章下。我想对节/章使用相同的概念,除了我想链接到每个单独的节并在新视图中单独显示。
截面模型的路线说:
piece_section GET /pieces/:piece_id/sections/:id(.:format) sections#show
piece_sections GET /pieces/:piece_id/sections(.:format) sections#index
我在新页面中显示单个部分时遇到问题。
我的第一个问题是,我无法直接链接到单个部分的显示操作,而且我也不知道为什么:
这是show.html.erb中父级“ Piece”或书籍的相关部分:
<% @pieces.sections.each do |section| %>
<li>
<%= link_to section.name, piece_section_path(section), class: 'section_name' %>
<!-- this middle part 'piece.name' is the psart we want the link to say, the next part is our route helper.-->
</li>
<% end %>
<%= link_to "delete", piece_path(@pieces), method: :delete, data: {confirm: "Really delete the article?"}
%>
父级“部件”控制器:
def show
@pieces = Piece.find(params[:id])
end
当我尝试执行此操作时,出现以下错误:
ActionController::UrlGenerationError in Pieces#show
Showing /home/david/Documents/Learning/StuddyBuddy/app/views/pieces/show.html.erb where line #9 raised:
No route matches {:action=>"show", :controller=>"sections", :id=>nil, :piece_id=>#<Section id: 1, name: "xama", broader_context: "hahahah", summary: nil, key_questions_addressed: nil, thoughts: nil, piece_id: 1, created_at: "2016-07-28 10:46:05", updated_at: "2016-07-28 10:46:05">} missing required keys: [:id]
<%= link_to section.name, piece_section_path(section), class: 'section_name' %>
当我链接到节模型的索引动作时,它可以工作,并且我看到父级“ Piece”的“ show”动作非常好。
我的第二个问题是当我在观看作品时。我尝试单击一个单独的部分(即此链接:
<%= link_to section.name, piece_sections_path(section), class: 'section_name' %>
)
出于某种原因,我无法显示“截面”模型的截面和列。
这是节控制器:
class SectionsController < ApplicationController
def index
@pieces = Piece.find(params[:piece_id])
@sections = @pieces.sections.find(params[:section_id])
end
def show
@sections = Section.all
#@sections = Piece.sections.find(params[:id])
#@sections = @piece.sections.all
#@sections.piece_id = @pieces.id
end
end
这是Section模型的index.html.erb文件:
<h1> Yoyo</h1>
<p>Piece: <%= @pieces.name%></p>
<p> Section: <%= @sections.name%></p>
<p> Broader Context: <%= @sections.broader_context %></p>
这是routes.rb文件:
Rails.application.routes.draw do
root to: 'articles#index'
resources :pieces do
resources :sections
end
end
我得到的问题是这样的:
ActiveRecord::RecordNotFound in SectionsController#index
Couldn't find Section without an ID
Request
Parameters:
{"piece_id"=>"1"}
我在这里不明白的是我如何无法访问节ID?我怎么只能访问piece_id?
我一直很努力地为我提供帮助,我将不胜感激。
根据piece_section_path
需要传递参数ID链接到助手,需要两个参数
piece_section GET /pieces/:piece_id/sections/:id(.:format) sections#show
:piece_id
:id
(section_id
)将您的链接更改为:
<%= link_to section.name, piece_section_path(@pieces, section), class: 'section_name' %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句