2016-04-22 9 views
0

Best In Placeを更新するのに問題があります。私がこの宝石を使ったり、Railsアプリを作ったりしたのはこれが初めてのことです。ドキュメントを精査してここで他の質問を検索したにもかかわらず、何か単純なものを見逃していると思います。Rails ParameterMissingのために最適

これは私がコンソールに取得エラーです:

Started PUT "/tasks/1" for 127.0.0.1 at 2016-04-22 11:52:10 -0600 
Processing by TasksController#update as JSON 
    Parameters: {"authenticity_token"=>"cAwRbx8JeYDMG1LrR7nl0VQfwW/x00RUd8rsTP8Iwc 
0=", "tasks"=>{"title"=>"Task 1sadsads"}, "id"=>"1"} 
    Task Load (0.0ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = ? ORD 
ER BY priority ASC LIMIT 1 [["id", 1]] 
    CACHE (0.0ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = ? ORDER B 
Y priority ASC LIMIT 1 [["id", "1"]] 
Completed 400 Bad Request in 3ms 

ActionController::ParameterMissing (param is missing or the value is empty: task 
): 
    app/controllers/tasks_controller.rb:99:in `task_params' 
    app/controllers/tasks_controller.rb:62:in `update' 


    Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8 
/lib/action_dispatch/middleware/templates/rescues/_source.erb (1.0ms) 
    Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8 
/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (0.0ms) 
    Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8 
/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb 
(0.0ms) 
    Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8 
/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb (36.0ms) 

マイコントローラ:部分

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

    # GET /tasks 
    # GET /tasks.json 
    def index 
    @tasks = Task.all 
    respond_to do |type| 
     type.html 
     type.json {render :json => @task} 
    end 
    end 



    # GET /tasks/1 
    # GET /tasks/1.json 
    def show 
      @task = Task.find params[:id] 
    respond_to do |format| 
     format.html 
     format.json {render :json => @task} 
    end 
    end 

    # GET /tasks/new 
    def new 
    @task = Task.new 
    end 

    # GET /tasks/1/edit 
    def edit 
    end 

    # POST /tasks 
    # POST /tasks.json 
    def create 
    @task = Task.new(task_params) 

    respond_to do |format| 
     if @task.save 
     format.html { redirect_to @task, notice: 'Task was successfully created.' } 
     format.json { render :show, status: :created, location: @task } 
     else 
     format.html { render :new } 
     format.json { render json: @task.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def sort 
    params[:order].each do |key,value| 
     Task.find(value[:id]).update_attribute(:priority,value[:position]) 
    end 
    render :nothing => true 
    end 

    # PATCH/PUT /tasks/1 
    # PATCH/PUT /tasks/1.json 
    def update 
     @task = Task.find params[:id] 
    if @task.update(task_params) 
     respond_to do |format| 
     format.html { redirect_to(@task)} 
     format.json { render :json => @task } 
     end 
    else 
     respond_to do |format| 
     format.html { render :action => :edit } # edit.html.erb 
     format.json { render :nothing => true } 
     end 
    end 
    end 







    # DELETE /tasks/1 
    # DELETE /tasks/1.json 
    def destroy 
    @task.destroy 
    respond_to do |format| 
     format.html { redirect_to tasks_url, notice: 'Task was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_task 
     @task = Task.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def task_params 
     params.require(:task).permit(:title, :description, :priority) 
    end 
end 

マイビュー:

<div class="panel panel-default" data-id="<%= task.id %>"> 
     <div class="panel-heading"> 
     <h3 class="panel-title"><span class="rest-in-place" data-url="/tasks/<%= task.id %>" data-object="tasks" data-attribute="title" data-placeholder="Enter a title"> 
     <%= task.title %> 
    </span></h3> 
     </div> 
     <div class="panel-body"> 
     <%= truncate task.description, length: 50 %> 
     </div> 
    </div> 

私は本当に私が得ることができる任意の助けに感謝。私は99%がコントローラで間違った設定をしていると確信しています。私の人生はそれが何であるか把握できません。

EDIT:このバックグラウンドでは、「タスク」がたくさんあるので、それらをインデックスにすべてリストし、タイトルをクリックするだけでインデックス上のタスクを更新できます。

答えて

0
ActionController::ParameterMissing (param is missing or the value is empty: task 
): 
app/controllers/tasks_controller.rb:99:in `task_params' 
app/controllers/tasks_controller.rb:62:in `update' 

これは、名前が:taskのパラメータがないことを示しています。このメッセージの上にパラメータが表示されます。

Parameters: {"authenticity_token"=>"cAwRbx8JeYDMG1LrR7nl0VQfwW/x00RUd8rsTP8Iwc 
0=", "tasks"=>{"title"=>"Task 1sadsads"}, "id"=>"1"} 

あなたはここにあなたのparamsにtasksを持っています。この情報はあなたの見解から来ています。

data-object="tasks" 

ビューのこの部分をtaskに変更して、リクエストを正しく送信するようにしてください。

+0

ありがとうございます。私はとてもばかげている。もちろん、これはあなたの提案と完全に一致しました。 –

+0

お力になれて、嬉しいです! –

関連する問題