0

データベースに pcomment というテーブルがあります。各 pcomment は購入に属します。購入には has_many pcomments があります。さらに、各ユーザーには多くの pcomments があり、各 pcomment はユーザーに属しています。データベースでは、pcomments テーブルには id/user_id/purchase_id/body/created_at/updated_at があります

user_id が常に空白であることを除いて、すべてが正しく入力されています。現在サインインしているユーザー (つまり、pcomment を作成しているユーザー) の user_id を入力する必要があります。user_id と pcomment_id の両方が add_index を使用してテーブルにインデックス付けされます (移行中)

pcommentのフォームはこちら

  <%= form_for([purchase, purchase.pcomments.build]) do |f| %>

    <div class="field">
      <h4>What deal are you offering?</h4>
      <%= f.text_field :body %>


    </div>


  <% end %>

ここに pcomments_controller.rb があります

class PcommentsController < ApplicationController
  before_filter :signed_in_user
  def create
    @purchase = Purchase.find(params[:purchase_id])
    @pcomment = @purchase.pcomments.build(params[:pcomment])

    @pcomment.purchase = @purchase

    if @pcomment.save
       flash[:success] = "Offer submited!"
       redirect_to :back
    else
      render 'shared/_pcomment_form'
    end
  end

  def new
@pcomment=purchase.pcomments.new

  end


end

私のコードがさらに必要な場合は、https://github.com/tradespring1/tradespring/にあります。

4

1 に答える 1

0

これはおそらく最善の方法ではありませんが、「current_user」メソッドを定義した場合、またはデバイスを使用している場合は、 @pcomment.user_id = current_user.id を @pcomment.save の直前に置くだけです。

于 2012-10-13T02:03:48.683 に答える