문제

내가 이해하려고 노력 레일'field_for,구체적으로 어떻게 가야로 컨트롤러한 중첩된 리소스입니다.내 문제입니다면 내가 만드는 만화와 코믹 페이지를 통해 만화의 형태로,페이지의 이미지는 저장되지 않습니다.

나는 사용자,만화,및 ComicPages.여기에는 모델:

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 params 이 controller???

  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
도움이 되었습니까?

해결책

당신은 필요한 허가는 그들 분야에서 comic_pages 저장할을 통해서 comic_params 섹션 컨트롤러

params.require(:comic).permit(:title, :synopsis, comic_pages_attributes: [:comic_page_image])
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top