2016-05-03 56 views
0

我试图将选项保存到数据库。 闻听此事在DB同时节省控制台:Rails - 选项保存到数据库(onchange)

  • 右键选择值:"result"=>"1"其1-4
  • 更新ID权值:"id"=>"4"其1-100

我会明白任何建议或帮助,试图找出几个小时。

但仍收到此错误:

CONSOLE

Started POST "/update_result/4" for 65.200.165.210 at 2016-05-03 22:42:16 +0000 
Cannot render console from 65.200.165.210! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
Processing by DashboardController#update_result as JS 
    Parameters: {"utf8"=>"✓", "bitbucket"=>{"result"=>"1"}, "id"=>"4"} 
    Bitbucket Load (0.5ms) SELECT "bitbuckets".* FROM "bitbuckets" WHERE "bitbuckets"."id" = ? LIMIT 1 [["id", 4]] 
    (0.1ms) begin transaction 
    (0.2ms) rollback transaction 
Completed 500 Internal Server Error in 34ms (ActiveRecord: 0.8ms) 

ArgumentError (When assigning attributes, you must pass a hash as an argument.): 
    app/controllers/dashboard_controller.rb:13:in `update_result' 


    Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/_source.erb (12.0ms) 
    Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (5.9ms) 
    Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (1.7ms) 
    Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb (183.9ms) 

ROUTES

post 'update_result/:id', to: 'dashboard#update_result', as: :update_result 

控制器

def update_result 
     @result = Bitbucket.find(params[:id]) 
     @result.update_attributes(params[:result]) 
    end 

FORM鉴于

<%= form_for(commit, url: update_result_path(commit), :method => :post, :remote => true) do |r| %> 
    <%= r.select :result, [['Waiting', 1], ['Success', 2], ['Broken - Not Submitted', 3], ['Broken - Quick Win', 4]], { selected: commit.result }, { onclick: "$(this).parent('form').submit();" } %> 
<% end %> 

DB迁移

create_table :bitbuckets do |t| 
    t.string :name 
    t.text :message 
    t.text :date 
    t.datetime :remain, :null => false, :default => Time.now 
    t.integer :assignee 
    t.integer :result 

    t.timestamps null: false 
end 

回答

0

加入私有函数在控制器解决:

控制器

def update_result 
     @result = Bitbucket.find(params[:id]) 
     @result.update_attributes(update_params) 
    end 

    private 
    def update_params 
     params.require(:bitbucket).permit(:result) 
    end