After my rails 4 upgrade, trying to create a new record for any of my ActiveRecord classes gives
No explicit conversion of Symbol into String
For example, here is my links links_params method
def link_params
params.require(:link)
.permit(:url_address, :group_id, :alt_text, :version_number,
:position, :content_date, :verified_date) # This is line 157
end
# line 118 is: @link = Link.new(link_params)
but I get
TypeError (no implicit conversion of Symbol into String):
app/controllers/links_controller.rb:157:in `link_params'
app/controllers/links_controller.rb:118:in `create'
This error occurred while loading the following files:
link
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"0FqFTx2EjCIO+R+rm97lF15+id4b452n+dBuUNxAL9U=",
"link"=>{"url_address"=>"http://www.google.com",
"alt_text"=>"",
"version_number"=>"",
"group_id"=>"49",
"content_date"=>"08/18/2014"},
"commit"=>"Save"}
I'm not sure how it happened, but it looks like your params object is just a hash... and not an
ActionController::Parameters
object. When params is just a hash:But if it's an ActionController::Parameters object
Are you doing something to
params
beforelink_params
gets a hold of it?EDIT: According to the API Docs, Strong params is only available in Rails 4.0.2. If you're using an earlier version, you will have to stick with Rails 3 attr_accessible