2017-02-05 9 views
0

Storeorder属性を編集しようとすると、Storeorderのネストされた属性を持つタスクのテーブルに対してインライン編集を行うためにベストインプレースジェムを使用していますthis postで提供されている手順を使用して、私は204 No Contentのエラーが表示されます。私はそれが 'Storeorder Load'が起こる前の最初の取引開始と関係があるのだろうか?ネストされていないすべてのBIP更新では、最初の「トランザクション開始」コールでUPDATEを行いますが、ここではまだStoreorderがロードされています。私が知る限り、パラメータは100%正しいです。 >best_in_placeネストされた属性のインライン編集で "204 No Content"エラーが発生する

class TasksController < ApplicationController 
    before_action :set_task, only: [:show, :edit, :update, :destroy] 

    def update 
    @task = Task.find(params[:id]) 
    respond_to do |format| 
     if @task.update(task_params) 
     format.html { redirect_to @task, notice: 'Task was successfully updated.' } 
     format.json { respond_with_bip(@task) } 
     else 
     format.html { render :edit } 
     format.json { respond_with_bip(@task) } 
     end 
    end 
    end 

    private 
    def set_task 
     @task = Task.find(params[:id]) 
    end 

    def task_params 
     params.require(:task).permit! 
    end 
end 

task.rb - - >

class Task < ApplicationRecord 
    has_one :storeorder, :dependent => :destroy 
    accepts_nested_attributes_for :storeorder, :reject_if => lambda { |a| a[:store_id].blank? }, :allow_destroy => true 
end 

storeorder.rb - >

class Storeorder < ApplicationRecord 
    belongs_to :task 
end 

ダッシュボード、コード

Started PUT "/tasks/3" for 104.200.151.54 at 2017-02-05 18:08:24 +0000 
Processing by TasksController#update as JSON 
    Parameters: {"task"=>{"storeorder_attributes"=>{"id"=>"3", "activity"=>"Shipped"}}, "authenticity_token"=>"D2c3ddoIC220rkPE5i7U+EGiwSrdCq7s8vdFY8VEQTaTMqetuBo8SJX9+Wabl+Bh6A6d49Pt/Omp4E/nq/udQA==", "id"=>"3"} 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] 
    Task Load (0.2ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]] 
    CACHE (0.0ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]] 
    (0.1ms) begin transaction 
    Storeorder Load (0.2ms) SELECT "storeorders".* FROM "storeorders" WHERE "storeorders"."task_id" = ? LIMIT ? [["task_id", 3], ["LIMIT", 1]] 
    (0.1ms) commit transaction 
    (0.1ms) begin transaction 
    (0.1ms) commit transaction 
Completed 204 No Content in 10ms (ActiveRecord: 1.0ms) 

tasks_controller.rbを参照してください。 .html.erb - >

<td><%= best_in_place task.storeorder, :activity, 
     url: task_path(task.id), 
     param: "task[storeorder_attributes][id]=#{task.storeorder.id}&task[storeorder_attributes]", 
     as: :select, 
     collection: [["Pending Shipment", "Pending Shipment"], ["Shipped", "Shipped"], ["Cancelled", "Cancelled"], ["Pending Further Action", "Pending Further Action"]], %> 
</td> 

内側のHTMLコード - >

<span 
    data-bip-type="select" 
    data-bip-attribute="activity" 
    data-bip-collection="[["Pending Shipment","Pending Shipment"],["Shipped","Shipped"],["Cancelled","Cancelled"],["Pending Further Action","Pending Further Action"]]" 
    data-bip-inner-class="form-control" 
    data-bip-object="task[storeorder_attributes][id]=3&task[storeorder_attributes]" 
    data-bip-original-content="Pending Shipment" 
    data-bip-skip-blur="false" 
    data-bip-url="/tasks/3" 
    data-bip-value="Shipped" 
    class="best_in_place form-control" 
    id="best_in_place_storeorder_3_activity"> 
    Shipped 
</span> 

私はおそらく、このエラーが発生している欠けているかもしれないものを見ることができません。ワークフローの整合性を維持するためにインラインで編集を行うことが不可欠です。そうしないと、BIPがデフォルトでスコープ内でネストされた属性編集をしていないことがわかっているので、代替提案が可能です。

+0

204レスポンスはエラーコードではありません。レコードがデータベース内で更新されているかどうかを確認する必要があります。 –

+0

それは何であれ、レコードを正しく更新していません。 –

答えて

1

:reject_if => lambda { |a| a[:store_id].blank? } paramsに渡されたstore_idは表示されません。

+0

さて、私は今や馬鹿のように感じます。私は問題を特定しようとしているところにコードを追加したり削除したりしていましたが、その拒否条項には一度も注意を払っていませんでした。タスクが 'Storeorder'に設定されていない場合、Storeorderテーブルが100%空白になるように、Task/Store Orderコンボが最初に作成されるNewビューがあります。その行を削除すると、ダッシュボードで自分の問題が修正されますが、新しいタスクビューにのみ適用するようにreject_if句を保持できる方法はわかりますか? @Abhishek Kumar助けてくれてありがとう! METHOD_NAME ?,:allow_destroy =>真 DEF METHOD_NAME(属性) self.new_record –

+1

あなたは 'クラスタスク<:storeorder、:reject_if = ApplicationRecord accepts_nested_attributes_for>を追加することができますか? && attributes [:store_id] .blank? end ' –

関連する問題