2017-05-25 14 views
-2

紛争が変更に真 に偽のブール順序を保存して、後にレールを作成する場合はログ未定義のメソッドが `update_attributes Railsの偽のために:FalseClassの

未定義のメソッド` update_attributes示した偽のために:FalseClassの

誰かがなぜ知っていますか?

order 
has_one :dispute 

dispute 
belongs_to :order 


def create 
    if current_user == @order.buyer 



     dispute = @order.dispute.nil? ? Dispute.new : @order.dispute 

     if dispute.save 
@order = params[:dispute_status] == "1" 

     @order.update_attributes(:dispute_status => true) 

     redirect_to order_dispute_path(@order, @dispute) 
     flash[:success] = 'yess' 

     else 
     flash[:error] = 'Erro' 
     redirect_to :back 
     end 
    end 
    end 

と私は@のorder.update_attributesを削除する場合(:dispute_status =>真)

ログ示しています

ActionController :: RoutingError(ルートマッチ{いいえ:アクション=> 、 "作成":コントローラ=> "紛争" を、:ORDER_ID => falseを、:フォーマット=> nilを}

+1

[未定義のメソッド更新\ _attributes in Rails 4](https://stackoverflow.com/questions/21605186/undefined-method-update-attributes-in-rails-4) –

答えて

0

は、さてあなたは@order = paramsは持っている[:dispute_status] == 1。このリターンをブール値あなたの場合はおそらく偽です。ですから、@orderは真偽値であり、あなたはそれに対してupdate_attributesを呼び出そうとしています。

+0

の可能な複製は正しくありませんか? – Danks

+0

何ですか?ブール値ではありませんか?いいえ、あなたが書いた方法では、params [:dispute_status] == 1の戻り値に設定しているので、それをブール値にしています。 – Jeff

0

FalseClass.instance_methods.include?(:update_attributes) # false ActiveRecord::Base.instance_methods.include?(:update_attributes) # true あなた@orderはActiveRecordの::ベースインスタンスではありません!クリア?

関連する問題