Reputation: 15
I'm a newer to Ruby on Rails.I got a problem as following: My rails environment is ruby2.0.0 ,rails 4.1.1
1,First,here is my Energies Controller:
class EnergiesController < ApplicationController
before_action :all_energies, only: [:index, :create, :update, :destroy]
before_action :set_energies, only: [:edit, :update, :destroy]
respond_to :html, :js
........
def create
puts "in create method"
@energy = Energy.create(energy_params)
puts "create method end"
end
.......
private
.......
def energy_params
puts "in get_params method"
params.require(:energy).permit(:title, :capacity, :generation, :power_category, :location, :longitude, :latitude, :energy_role)
puts params
puts "get_params method end"
end
end
2,my log output is:
Started POST "/energies" for 127.0.0.1 at 2014-08-29 18:44:25 +0800
Processing by EnergiesController#create as JS
Parameters{"utf8"=>"✓","authenticity_token"=>"rliBtHNMG/7PvivOE3WT4Z2K0MY/d9WnUYRFu04imNk=", "energy"=>{"title"=>"qwe", "capacity"=>"1", "generation"=>"12", "power_category"=>"12", "location"=>"12", "longitude"=>"12", "latitude"=>"123", "energy_role"=>"13"}, "commit"=>"Create Energy"}
in get_all method
get_all method end
**in create method**
**in get_params method**
{"utf8"=>"✓", "authenticity_token"=>"rliBtHNMG/7PvivOE3WT4Z2K0MY/d9WnUYRFu04imNk=", "energy"=>{"title"=>"qwe", "capacity"=>"1", "generation"=>"12", "power_category"=>"12", "location"=>"12", "longitude"=>"12", "latitude"=>"123", "energy_role"=>"13"}, "commit"=>"Create Energy", "action"=>"create", "controller"=>"energies"}
**get_params method end**
(0.1ms) begin transaction
SQL (0.4ms) INSERT INTO "energies" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2014-08-29 10:44:25.440007"], ["updated_at", "2014-08-29 10:44:25.440007"]]
(171.5ms) commit transaction
**create method end**
in create_js file
Energy Load (0.3ms) SELECT "energies".* FROM "energies"
Rendered energies/_energy.html.erb (4.2ms)
Rendered energies/create.js.erb (11.4ms)
Completed 200 OK in 195ms (Views: 17.9ms | ActiveRecord: 172.4ms)
AS you can see, the method get_param looks like run properly, but when the the code "@energy = Energy.create(energy_params)" run, it will be translated to the SQL : "SQL (0.4ms) INSERT INTO "energies" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2014-08-29 10:44:25.440007"], ["updated_at", "2014-08-29 10:44:25.440007"]]"
Actually, it ran alright at first,but i don't know why it suddenly doesn't work.Much thanks for any help.
Upvotes: 1
Views: 63
Reputation: 44675
def energy_params
puts "in get_params method"
params.require(:energy).permit(:title, :capacity, :generation, :power_category, :location, :longitude, :latitude, :energy_role)
puts params
puts "get_params method end"
end
Remove all the unnecessary lines. Ruby methods returns the value returned by its last executed line - in this case this is always nil (value returned from puts).
def energy_params
params.require(:energy).permit(:title, :capacity, :generation, :power_category, :location, :longitude, :latitude, :energy_role)
end
Upvotes: 2