Я создаю веб-сайт, на котором люди могут читать манги, благодаря трем эстафетам: один для самой манги, один для своих глав и последний для страниц главы. В моем routes.rb файла, я вложенные страницах внутри главе ресурсов, которые я вложенные внутри манг, так что мои маршруты выглядеть следующим образом:Проблема с вложенным параметром form_for
resources :mangas do
resources :chapters do
resources :pejis #Rails doesn't like the "scan" word
end
end
я могу создать манг без проблем, но неизвестно причина, я не могу управлять, чтобы сделать форму появится:
просмотры/глава/_form.html.erb
<%= form_for(chapter) do |f| %>
<div class="field">
<%= f.label :titre %>
<%= f.text_field :titre %>
</div>
<div class="field">
<%= f.label :apercu %>
<%= f.file_field :apercu %>
</div>
<div class="field">
<!-- Allows me to upload the chapter's pages in the same time -->
<label for="images[]">Multi Upload</label>
<%= file_field_tag 'images[]', type: :file, multiple: true %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
form_for параметр, как это было при создании команды эшафота. Однако, очевидно, это не сработало, так как я вложил ресурсы в эскиз манги. Я пробовал несколько вещей, пока new_manga_chapter_path
не позволил мне увидеть форму. Однако при отправке я получаю следующую ошибку: No route matches [POST] "/mangas/1/chapters/new"
. Я даже не уверен, что это нормально или странно.
Я уверен, что я не должен ставить «new_manga_chapter_path» в качестве параметра для form_for
, но я понятия не имею, что положить вместо этого.
Только в случае, здесь глава управления:
class ChaptersController < ApplicationController
before_action :set_chapter, only: [:show, :edit, :update, :destroy]
def index
@chapters = Chapter.all
end
def show
end
def new
@chapter = Chapter.new
end
def edit
end
def create
@chapter = Chapter.new(chapter_params)
if @chapter.save
(params[:images] || []).each_with_index do |image, index|
@chapter.pejis.create(image: image, scan_number: index + 1)
end
redirect_to @chapter, notice: 'Chapter was successfully created.'
else
render :new
end
end
def update
if @chapter.update(chapter_params)
(params[:images] || []).each_with_index do |image, index|
@chapter.pejis.create(image: image, scan_number: index + 1)
end
redirect_to @chapter, notice: 'Chapter was successfully updated.'
else
render :edit
end
end
def destroy
@chapter.destroy
redirect_to chapters_url, notice: 'Chapter was successfully destroyed.'
end
private
def set_chapter
@chapter = Chapter.friendly.find(params[:id])
end
def chapter_params
params.require(:chapter).permit(:titre, :apercu)
end
end
Не стесняйтесь, если вы хотите увидеть что-то еще
Спасибо заранее
И думать я думал об этом anwser себя, но не может установить это вверх. Большое спасибо !! – Jaeger
Однако у меня есть последний (маленький) вопрос: все работает, но я не могу получить доступ к главе после ее создания (он не работает при перенаправлении). Я пробовал с manga_chapter_path (id: @ chapter.id, manga_id: @ manga), но он не может найти @ manga, даже подумал, что добавил его в функцию set_chapter. Любая идея? – Jaeger
Какая ошибка? Вы должны добавить в конце метода (возможно, создать) «redirect_to manga_path (@manga)» –