Je suis en train de créer un site web où l'on peut lire plusieurs mangas. La structure est la suivante (et comme demandé par les personnes pour lesquelles je travaille): Tout d'abord, vous avez tous les titres de manga (disons, Naruto, One Piece, One Punch, etc.). Ensuite, lorsque vous cliquez sur l'un des mangas, vous accédez aux chapitres liés au manga. Ensuite, vous avez enfin accès aux scans du manga. Ce qui me dérange, c'est que j'ai utilisé deux échafaudages différents (un pour les mangas et un autre pour les chapitres), mais je ne sais pas comment le dire à Rails, lorsqu'un membre du personnel veut ajouter un chapitre à un manga , quel manga le chapitre est lié à.Comment puis-je transmettre des données d'un échafaud à un autre?
j'ai décidé de créer un lien vers la création de chapitres (chapters#new
) à partir du titre du manga (mangas#show
), et de passer id à l'URL de création du chapitre du manga comme suit:
routes.rb
get '/chapters/new/:manga_id' => 'chapters#new', as: :new_chapter
manga # montrent
<%= link_to 'Add a new chapter', new_chapter_path(@manga.attributes['id']) %>
(Depuis que je l'utilise FriendlyId, ce fut la seule méthode que je pouvais trouver pour obtenir le vrai id au lieu de la limace)
Jusqu'à présent, quand je suis à l'action chapters#new
, mon URL se présente comme suit: http://localhost:3000/chapters/new/1
, 1 étant le manga id qui a transmis avec le lien.
Ensuite, dans le contrôleur, j'isole l'id comme suit:
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
Cependant, lors de la présentation du formulaire, je reçois l'erreur suivante:
Manga(#106972960) expected, got Fixnum(#10269260)
Je crois que c'est parce que je J'ai donné au contrôleur un numéro pendant qu'il attendait un objet entier, mais j'ai pensé que c'était suffisant, et maintenant je n'ai plus d'idée.
Quelqu'un a une idée?
Bonjour, désolé de répondre à cette question en retard, mais je n'ai pas pu travailler sur le code pendant quelques jours, j'ai juste une question: tout s'est bien passé (un tweak ou deux étaient nécessaires), mais maintenant je suis bloqué par le formulaire de création: il n'accepte pas "chapter" ni "@chapter" comme argument, j'ai donc essayé avec quelques choses jusqu'à ce que "new_manga_chapters_path'" fasse apparaître le formulaire. Formulaire .. Que dois-je mettre comme argument pour 'form_for'? – Jaeger
Lorsque vous créez de nouvelles entrées qui sont imbriquées, vous devrez indiquer leur chemin correct comme vous l'avez découvert avec" new_manga_chapters_path "Dans ce cas, vous devrez définir Une variable d'instance dans le contrôleur de votre chapitre et référence cette variable d'instance dans votre formulaire.Rails s'occupe du reste.Je mettrai à jour ma réponse plus tard car vous devrez mettre à jour votre modèle ainsi que lorsque vous créez un Cha Il est stocké comme un chapitre d'un manga et un balayage d'un chapitre. –