0

写真と製品の 2 つのモデルがあります。これらは has_many を介して関連付けられ、ネストされています。

製品コントローラーの「作成」アクションで、ユーザーがアップロードした、製品にリンクされていないすべての写真を関連付けます。(写真はajax経由で追加されるため、このようにします)。

今編集ページに。写真を追加したい。これには、写真を製品にリンクする必要があります。作成アクションでそれを行う前に。しかしご存知のように、Rails には実際の編集アクションはありません。このため、私の製品コントローラーには、2 つに参加する場所がありません。

それで、どうすればこれを回避できますか?

PS 私はあなたが尋ねる前にフォト コントローラーで 2 つに参加することはできません

製品コントローラ

  def new 
    Photo.where(:product_id => nil, :user_id => current_user).delete_all
    @product = Product.new
    @photo = Photo.new
  end

  def create
  binding.pry
  @product = current_user.products.create(params[:product])
    if @product.save
      Photo.where(:product_id => nil, :user_id => current_user).update_all(:product_id => @product.id) 
      render "show", notice: "Product created!"
    else
      render "new", error: "Error submitting product"
    end
  end

  def edit
    @product = Product.find(params[:id])
    @photo = Photo.new
  end

フォトコントローラー

  def create
  @photo = Photo.new(params[:photo])
    respond_to do |format|
      @photo.user_id = current_user.id
      if @photo.save
        format.html {
          render :json => [@photo.to_jq_image].to_json,
          :content_type => 'text/html',
          :layout => false
        }
        format.json { render json: {files: [@photo.to_jq_image]}, status: :created, location: @photo }
      else
        format.html { render action: "new" }
        format.json { render json: @photo.errors, status: :unprocessable_entity }
      end
    end
  end
4

2 に答える 2

2

そのための方法があります

def update
end 

存在する

于 2013-07-16T08:24:50.257 に答える
0

スキャフォールディングを少なくとも 1 回使用して、典型的な Rails コントローラーを観察すると役立つ場合があります。生成されたメソッドに注意を払います。

于 2013-07-16T05:48:00.930 に答える