레일즈의 field_for, 특히 중첩 된 리소스의 컨트롤러로 들어가야 할 것을 이해하려고합니다. 제 문제는 코믹 양식을 통해 만화 페이지가있는 만화를 만들 때 페이지의 이미지가 저장되지 않는다는 것입니다.레일 네개의 네스트 된 리소스에 대한 컨트롤러 액션
사용자, 만화 및 코믹 페이지가 있습니다. 여기 모델은 다음과 같습니다
다음class User < ActiveRecord::Base
has_many :comics
has_many :comic_pages, through: :comics
end
class Comic < ActiveRecord::Base
belongs_to :user
has_many :comic_pages, :dependent => :destroy
accepts_nested_attributes_for :comic_pages
end
class ComicPage < ActiveRecord::Base
belongs_to :comic
end
가 나는 또한 comic_pages를 추가 할 경우, 만화의 형태이다 :
<%= form_for ([@user, @comic]) do |f| %>
<%= f.text_field :title %>
<%= f.fields_for :comic_pages do |comic_page| %>
<%= comic_page.file_field :comic_page_image %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
나는 comics_controller에 대한 혼란 스러워요 (새로운 작업을 생성). 이 컨트롤러에 comic_page 매개 변수를 전달하려면 어떻게합니까 ???
def new
@user = current_user
@comic = @user.comics.new
@comic.comic_pages.build
end
def create
@user = current_user
@comic = @user.comics.new(comic_params)
@comic.comic_pages.build
respond_to do |format|
if @comic.save
format.html { redirect_to @user, notice: 'Comic was successfully created.' }
format.json { render action: 'show', status: :created, location: @user }
else
format.html { render action: 'new' }
format.json { render json: @comic.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_comic
@comic = Comic.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def comic_params
params.require(:comic).permit(:title, :synopsis)
end
def comic_page_params
params.require(:comic_page).permit(:comic_page_image, :comic_image_file_name)
end
많은 감사!
def create
@user = current_user
@comic = @user.comics.new(comic_params)
i = 0
until i = 1
@comic_page = @comic.comic_pages.new(comic_params[:comic_pages_attributes]["#{i}"])
@comic_page.save
i += 1
end
respond_to do |format|
if @comic.save
...
end
end
end
안녕하세요, 여기 nwebie. 도움이 필요해. 귀하의 사례는 일대 다 다투 접근법을 사용했고 귀하는 그것을 작동하게 만들었습니다. 중첩 된 양식을 일대 다 단순 접근 방식으로 사용할 수 있습니까? (단순, 의미 없음': through' 테이블) – zhirzh