私は現在、いくつかのマンガを読むことができるウェブサイトを作成しています。構造は次の通りです(私が働いている人の尋ねたとおりです):まず、すべてのマンガタイトル(ナルト、ワンピース、ワンパンチなど)があります。そして、マンガの1つをクリックすると、マンガにリンクされている章が表示されます。その後、最終的にマンガのスキャンにアクセスできます。足場から別の足場にデータを渡すにはどうしたらいいですか?
2つの異なる足場(マンガ用とチャプター用)を使いましたが、スタッフがマンガに章を追加したいときにRailsに伝える方法はわかりませんこの章はリンクされています。
私は漫画のタイトル(mangas#show
)から章創造へのリンク(chapters#new
)を作成し、以下のようチャプターの作成URLに漫画のIDを渡すことにしました:
get '/chapters/new/:manga_id' => 'chapters#new', as: :new_chapter
漫画#が表示さ
<%= link_to 'Add a new chapter', new_chapter_path(@manga.attributes['id']) %>
(私はFriendlyIdを使用しているので、これは私が代わりにスラグの本当のIDを取得するために見つけることができる唯一の方法だった)
これまでのところ、私はchapters#new
アクションに到達したとき、私のURLは次のようになります。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)
私はこれがあると信じてI理由彼はオブジェクト全体を待っている間にコントローラに数値を与えましたが、これで十分だと思っていましたが、今は思考がなくなります。
誰でもアイデアはありますか?
こんにちは、申し訳ありませんが、私は数日間コードに取り組むことができませんでした。私はちょうど1つの質問があります:すべてがかなりスムーズに行った(1つの微調整または2つが必要でした)作成フォームでは、引数として "chapter"や "@chapter"を受け入れないので、 '' new_manga_chapters_path' "というフォームを表示させるまでいくつか試してみましたが、私はまだチャプターを保存する問題がありますform_forの引数として何を入れればいいですか? – Jaeger
ネストされた新しいエントリを作成するときは、 "new_manga_chapters_path"で見つかった正しいパスを指定する必要があります。あなたのチャプターのコントローラー内のインスタンス変数とあなたのフォーム内のそのインスタンス変数を参照するRailsは残りの部分を処理します後であなたのモデルを更新する必要があるので、それは、マンガの章と章のスキャンとして保存されます。 –