【发布时间】:2017-05-01 17:12:44
【问题描述】:
我目前正在创建一个可以阅读多个漫画的网站。结构如下(根据我为之工作的人的要求):首先,您拥有所有漫画标题(例如,火影忍者、海贼王、一拳等)。然后,当您单击其中一个漫画时,您将进入与该漫画相关的章节。然后你终于可以访问漫画的扫描了。
困扰我的是我使用了两种不同的脚手架(一个用于漫画,另一个用于章节),但我不知道如何告诉 Rails,当工作人员想要在漫画中添加章节时,该章节链接到哪个漫画。
我决定从漫画的标题 (mangas#show) 创建一个指向章节创建 (chapters#new) 的链接,并将漫画的 ID 传递给章节的创建 URL,如下所示:
routes.rb
get '/chapters/new/:manga_id' => 'chapters#new', as: :new_chapter
漫画#show
<%= link_to 'Add a new chapter', new_chapter_path(@manga.attributes['id']) %>
(由于我使用 FriendlyId,这是我能找到的唯一获取真实 ID 而不是 slug 的方法)
到目前为止,当我到达chapters#new 操作时,我的网址如下所示:http://localhost:3000/chapters/new/1,1 是与链接一起传输的漫画 ID。
然后,在控制器中,我将 id 隔离如下:
def create
@chapter = Chapter.new(chapter_params)
if @chapter.save
@chapter.manga = request.original_url.split('/').last.to_i
end
redirect_to @chapter, notice: 'Chapter was successfully created.'
else
render :new
end
end
但是,在提交表单时,我收到以下错误:
Manga(#106972960) expected, got Fixnum(#10269260)
我相信这是因为我在控制器等待整个对象时给了他一个数字,但我认为这已经足够了,现在我没有主意了。
有人有想法吗?
【问题讨论】: