I would like to add a video file to an Episode model using Paperclip in a Rails 4.0.0 app. However, I get an error "no implicit conversion of Symbol into Hash" when I call episode_params in my create action (second line):
def create
#episode = Episode.new(episode_params)
respond_to do |format|
if #episode.save
format.html { redirect_to #episode, notice: 'Episode was successfully created.' }
format.json { render action: 'show', status: :created, location: #episode }
else
format.html { render action: 'new' }
format.json { render json: #episode.errors, status: :unprocessable_entity }
end
end
end
My episode_params method:
def episode_params
params.require(:episode).permit(:name, :number, :description, :tag_list, :video => [:tempfile, :original_filename, :content_type, :headers])
end
And the params hash:
{"utf8"=>"✓", "authenticity_token"=>"VbOJvzWjlXMHOYpYMkwXUfdUxm9OcQx3LTMIJzk5eJQ=", "episode"=>{"name"=>"Test Episode 2", "number"=>"2", "description"=>"Testing Paperclip with video files", "tag_list"=>"test, file, video", "video"=>#<ActionDispatch::Http::UploadedFile:0x007fec361a80e0 #tempfile=#<Tempfile:/var/folders/yt/prn3v4gx3_bcrq8kr6wlfjjw0000gn/T/RackMultipart20130817-15917-1gu47ht>, #original_filename="file.mov", #content_type="video/quicktime", #headers="Content-Disposition: form-data; name=\"episode[video]\"; filename=\"file.mov\"\r\nContent-Type: video/quicktime\r\n">}, "commit"=>"Create Episode", "action"=>"create", "controller"=>"episodes"}
I've also tried with just :video instead of :video => [ etc ] with no luck. Any ideas would be greatly appreciated.
Full backtrace:
TypeError - no implicit conversion of Symbol into Hash:
paperclip (3.5.1) lib/paperclip/attachment.rb:72:in `initialize'
paperclip (3.5.1) lib/paperclip/has_attached_file.rb:46:in `block in define_instance_getter'
paperclip (3.5.1) lib/paperclip/has_attached_file.rb:65:in `block in define_setter'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:42:in `_assign_attribute'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:29:in `block in assign_attributes'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:23:in `assign_attributes'
activerecord (4.0.0) lib/active_record/core.rb:192:in `initialize'
activerecord (4.0.0) lib/active_record/inheritance.rb:27:in `new'
app/controllers/episodes_controller.rb:34:in `create'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:413:in `_run__3623801457634608219__process_action__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__4451766820120855143__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/Users/timhusson/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
/Users/timhusson/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
/Users/timhusson/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
As for your strong_params question, you should list only the name of the paperclip attachment. Assuming that your ARec class looks like this...
class Episode
has_attached_file :video, ... options ...
end
Then your params should look like this...
def episode_params
params.permit(:episode).permit(:name, :number, :description, :tag_list, :video)
end
You can actually get a sense of this if you look closely at the params hash. The :video item is a single object that has some attributes on it. Rails strong_params only cares that it's a single object and treats it like an integer or string so you only need to permit that attribute. I've got that type of thing working fine in a number of places.
Params are not your problem, however.
If you look at the backtrace, the error is coming from Paperclip::Attachment#initialize. Specifically, the referenced line (#72) says:
options = self.class.default_options.merge(options)
That makes a lot of sense in the context if you think about it. The error is telling you that you cannot covert a Symbol into a Hash. Most likely that means that the above statement is receiving a Symbol in the call to "merge(options)". Ultimately this probably means that your has_attached_file call in the class definition is improperly formatted.
Hrm, do you need "accepts_nested_attributes_for :video" in your episode model? Not sure if paperclip covers that or not. Also in your strong params you might try:
params.require(:episode).permit(:name, :number, :description, :tag_list, :video_attributes => [:tempfile, :original_filename, :content_type, :headers])
Ensure that your :default_url value is set to a valid path. I had the exact same problem and resolved it by setting a valid path.
Related
I've see How to redirect to a 404 in Rails? and it's multiple duplicates, but I'm trying to do the following with http://railscasts.com/episodes/53-handling-exceptions-revised also in place:
class ThingsController < ApplicationController
def show
#thing = Thing.find(params[:id])
if #thing.user != current_user && #thing.is_private?
# What do I put here to fake a 404?
end
end
end
I tried render text: "Not found", status: 404 but that does exactly that, just renders the text instead of handling it through the errors controller. I also tried render status: 404, but that still shows the record using the show template (albeit with a 404 status in the web inspector).
I'm sure this is dead simple, but I can't figure it out...
UPDATE: here is the framework trace when trying to access a private Thing that does not belong to the current_user as requested by #vee. Although, I had to set this back to get the trace:
# /config/environments/development.rb
config.consider_all_requests_local = true
Does that mess up the trace from the custom error handling though?
actionpack (4.0.3) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.3) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.3) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.3) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.3) lib/active_support/callbacks.rb:423:in `_run__1598237009408833250__process_action__callbacks'
activesupport (4.0.3) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.3) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.3) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.3) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.3) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.3) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.3) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.3) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.3) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.3) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.3) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.3) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.3) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.3) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.3) lib/action_dispatch/routing/route_set.rb:80:in `call'
actionpack (4.0.3) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.3) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.3) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.3) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.3) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.3) lib/action_dispatch/routing/route_set.rb:680:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.3) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
activerecord (4.0.3) lib/active_record/migration.rb:369:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.3) lib/active_support/callbacks.rb:373:in `_run__3933250874076526029__call__callbacks'
activesupport (4.0.3) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.3) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.3) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.3) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.0.3) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.3) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.3) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.3) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.3) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.3) lib/action_dispatch/middleware/static.rb:64:in `call'
rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
railties (4.0.3) lib/rails/engine.rb:511:in `call'
railties (4.0.3) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/Users/robs/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
/Users/robs/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
/Users/robs/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
UPDATE 2: Answered in the OP comments.
What you have is an authorization issue
You could use this tutorial to fix: How to make this action throw a 404?:
class ThingsController < ApplicationController
def show
#thing = Thing.find(params[:id])
raise ActiveRecord::RecordNotFound if (#thing.user != current_user) && (#thing.is_private?)
end
end
i'm stuck setting up a simple rails survey using the surveyor gem. I am following the basic instructions given here, on a new rails project: http://nubic.github.io/surveyor/
additionally, my gemfile includes the following in order to deal with rails 4 issues:
gem 'surveyor', :git => 'git://github.com/NUBIC/surveyor.git', :branch => 'rails4'
gem 'formtastic'
when i try to run the demo survey (kitchen sink), i end up with the following error:
NoMethodError in SurveyorController#edit
undefined method `with_sections_and_questions' for #<Class:0x007fe84d519450>
How to fix this?
SOLUTION: i have submitted a bugreport with the authors of surveyor. It seems that the gem is still awaiting an upgrade for rails 4. In the meantime, this development branch can be used to get things going:
gem 'surveyor', github: 'caboteria/surveyor', branch: 'rails4'
gem 'protected_attributes'
edit: full trace:
activerecord (4.0.0) lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/surveyor-70ed3f257416/lib/surveyor/surveyor_controller_methods.rb:63:in `edit'
app/controllers/surveyor_controller.rb:21:in `edit'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:443:in `_run__290069008777388403__process_action__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/railtie/configurable.rb:30:in `method_missing'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__3872098118566400954__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
Request
Parameters:
{"survey_code"=>"kitchen-sink-survey",
"response_set_code"=>"tyr1KN5kAw"}
Edit 2: issued grep as asked
$ grep with_sections_and_questions $(bundle show surveyor) -r –
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/surveyor- 70ed3f257416/lib/surveyor/models/response_set_methods.rb: { :questions => survey.with_sections_and_questions.sections.map(&:questions).flatten.compact.size,
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/surveyor-70ed3f257416/lib/surveyor/models/response_set_methods.rb: qs = survey.with_sections_and_questions.sections.map(&:questions).flatten
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/surveyor-70ed3f257416/lib/surveyor/surveyor_controller_methods.rb: #survey = Survey.with_sections_and_questions.find_by_id(#response_set.survey_id)
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/surveyor-70ed3f257416/spec/models/survey_spec.rb: survey.with_sections_and_questions.sections.map(&:questions).flatten.should have(4).questions
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/surveyor-70ed3f257416/spec/models/survey_spec.rb: survey.with_sections_and_questions.sections.map(&:questions).flatten.should == [q4,q1,q3,q2]
grep: –: No such file or directory
edit 3: more info added:
$ grep with_sections_and_questions /usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/ -r;
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems//surveyor-70ed3f257416/lib/surveyor/models/response_set_methods.rb: { :questions => survey.with_sections_and_questions.sections.map(&:questions).flatten.compact.size,
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems//surveyor-70ed3f257416/lib/surveyor/models/response_set_methods.rb: qs = survey.with_sections_and_questions.sections.map(&:questions).flatten
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems//surveyor-70ed3f257416/lib/surveyor/surveyor_controller_methods.rb: #survey = Survey.with_sections_and_questions.find_by_id(#response_set.survey_id)
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems//surveyor-70ed3f257416/spec/models/survey_spec.rb: survey.with_sections_and_questions.sections.map(&:questions).flatten.should have(4).questions
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems//surveyor-70ed3f257416/spec/models/survey_spec.rb: survey.with_sections_and_questions.sections.map(&:questions).flatten.should == [q4,q1,q3,q2]
The error:
undefined method `with_sections_and_questions' for #<Class:0x007fe84d519450>
says that the class Class has no instance method #with_sections_and_questions. You shall to search the method #with_sections_and_questions over all gems involved in your project. Try search as follows:
grep with_sections_and_questions /usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/ -r
If grep don't find out the definitions of the method similar to:
def with_sections_and_questions
you have to open an issue on the problem to developers on their issue page.
I am receiving an error in production only that says:
TypeError (no implicit conversion of Symbol into String):
app/controllers/products_controller.rb:15:in `create'
Here is the relevant code from the products_controller.rb file (note the line in question is line 2 below)
def create
#product = #category.products.build(product_params)
if #product.save
flash[:success] = "Product successfully created"
redirect_to [#category, #product]
else
flash[:alert] = "Product not created"
render 'new'
end
end
private
def product_params
params.require(:product).permit(:name, :description, :url, :category_id, :picture, :price, :social_image)
end
This code currently works fine in development and test environments and was previously working in production (will explain changes since last working production version below). I have used a diff tool to confirm that the Gemfile.lock is identical between local and production machines to eliminate that aspect also.
Note: I previously had file uploads working using the Paperclip gem as seen in the :picture param, however I recently included a second file upload for this model (:social_image) and also switched the upload method to Amazon S3 via the aws-sdk gem rather than just to the production server. Also, I have confirmed that all relevant settings between development.rb and production.rb are correct.
The params for the request can be found below:
{"utf8"=>"✓",
"authenticity_token"=>"yJJ1HwLZz9oDmsfUfN87DATCe+HC9IBhYVBddRvm4=",
"product"=>{"name"=>"Heineken Style USB Flash Drive",
"description"=>"Sample Description.",
"url"=>"http://www.amazon.com/",
"category_id"=>"1",
"price"=>"7.99",
"picture"=>#<ActionDispatch::Http::UploadedFile:0x00000004986260 #tempfile=#<Tempfile:/tmp/RackMultipart20131013-3068-fyjvy2>,
#original_filename="heineken-usb-drive-stock.jpg",
#content_type="image/jpeg",
#headers="Content-Disposition: form-data; name=\"product[picture]\"; filename=\"heineken-usb-drive-stock.jpg\"\r\nContent-Type: image/jpeg\r\n">,
"social_image"=>#<ActionDispatch::Http::UploadedFile:0x000000049861c0 #tempfile=#<Tempfile:/tmp/RackMultipart20131013-3068-1glzf9p>,
#original_filename="heineken-usb-drive.png",
#content_type="image/png",
#headers="Content-Disposition: form-data; name=\"product[social_image]\"; filename=\"heineken-usb-drive.png\"\r\nContent-Type: image/png\r\n">},
"commit"=>"Create Product",
"category_id"=>"geeky"}
I have included a stack track below as well for everyones reference:
paperclip (3.5.1) lib/paperclip/storage/s3.rb:141:in `gsub'
paperclip (3.5.1) lib/paperclip/storage/s3.rb:141:in `block in extended'
paperclip (3.5.1) lib/paperclip/storage/s3.rb:117:in `instance_eval'
paperclip (3.5.1) lib/paperclip/storage/s3.rb:117:in `extended'
paperclip (3.5.1) lib/paperclip/attachment.rb:390:in `extend'
paperclip (3.5.1) lib/paperclip/attachment.rb:390:in `initialize_storage'
paperclip (3.5.1) lib/paperclip/attachment.rb:85:in `initialize'
paperclip (3.5.1) lib/paperclip/has_attached_file.rb:46:in `new'
paperclip (3.5.1) lib/paperclip/has_attached_file.rb:46:in `block in define_instance_getter'
paperclip (3.5.1) lib/paperclip/has_attached_file.rb:65:in `block in define_setter'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:42:in `public_send'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:42:in `_assign_attribute'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:29:in `block in assign_attributes'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:23:in `each'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:23:in `assign_attributes'
activerecord (4.0.0) lib/active_record/core.rb:192:in `initialize'
activerecord (4.0.0) lib/active_record/inheritance.rb:27:in `new'
activerecord (4.0.0) lib/active_record/inheritance.rb:27:in `new'
activerecord (4.0.0) lib/active_record/reflection.rb:189:in `build_association'
activerecord (4.0.0) lib/active_record/associations/association.rb:242:in `build_record'
activerecord (4.0.0) lib/active_record/associations/collection_association.rb:114:in `build'
activerecord (4.0.0) lib/active_record/associations/collection_proxy.rb:229:in `build'
app/controllers/products_controller.rb:16:in `create'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:443:in `_run__3726568038748606890__process_action__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1565355437262191815__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
/home/application/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.16/lib/phusion_passenger/rack/thread_handler_extension.rb:77:in `process_request'
/home/application/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.16/lib/phusion_passenger/request_handler/thread_handler.rb:140:in `accept_and_process_next_request'
/home/application/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.16/lib/phusion_passenger/request_handler/thread_handler.rb:108:in `main_loop'
/home/application/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.16/lib/phusion_passenger/request_handler.rb:441:in `block (3 levels) in start_threads'
Finally the full codebase is available at: https://github.com/mhoad/there-goes-my-paycheck/tree/deployment should anyone want to check out any other files.
Any help would this would be majorly appreciated! Thanks in advance
In your production.rb file, paperclip is configured with :url => :s3_domain_url, while in dev it's :url => ':s3_domain_url' (note the quotation marks). Seems like you could move the whole config.paperclip_defaults to application.rb as well, so you're guaranteed the same settings even when something changes.
Thanks for posting a link to the repo, by the way - it's much easier to spot these things when you can see the whole app.
I'm a newbie in Ruby on Rails. I'm following the tutorial here Getting Started Ruby on Rails
Half way through creating posts, I stumbled on an error which is NoMethodError in PostsController#create in my controller. I'm confused right now.
Here's the code that I followed from the tutorial. Am I making a silly mistake here?
posts_controller.rb
class PostsController < ApplicationController
def new
end
def create
#post = Post.new(post_params)
#post.save
redirect_to #post
end
def show
#post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :text)
end
end
my posts/new.html.erb
<%= form_for :post, url: posts_path do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_area :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
routes.rb
Blog::Application.routes.draw do
resource :posts
root to: "welcome#index"
end
models/post.rb
class Post < ActiveRecord::Base
end
and the stack trace
actionpack (4.0.0) lib/action_dispatch/routing/polymorphic_routes.rb:129:in `polymorphic_url'
actionpack (4.0.0) lib/action_dispatch/routing/url_for.rb:159:in `url_for'
actionpack (4.0.0) lib/action_controller/metal/redirecting.rb:100:in `_compute_redirect_to_location'
turbolinks (1.3.0) lib/turbolinks.rb:15:in `_compute_redirect_to_location_with_xhr_referer'
actionpack (4.0.0) lib/action_controller/metal/redirecting.rb:70:in `redirect_to'
actionpack (4.0.0) lib/action_controller/metal/flash.rb:40:in `redirect_to'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:61:in `block in redirect_to'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:60:in `redirect_to'
app/controllers/posts_controller.rb:11:in `create'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:403:in `_run__506468238__process_action__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__153816630__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
I think you want to define
resources :posts
instead of a singular resource in your routes.rb file. If I'm not mistaken the redirect_to is actually trying to do post_path(id) which doesn't exist.
Sometimes it's helpful to me to look at somebody else's code like so many have posted on github. All the libraries for rails are on there anyway. Why not have a look. Maybe the tutorial code for the Michael Hartl book. https://github.com/mhartl/sample_app_3rd_edition
Just things like that help me. There are many other full rails apps on github though besides this one. If you don't already have an account then you should get one to store your tutorial app on and we could just go look at it as if it were a code paste.
I believe this one is that Rails Guides blog app as far as I have gotten although I haven't worked with it for a while now. https://github.com/DouglasAllen/Rails-projects/blob/master/rails_docs/blog/config/routes.rb
That's the thing about Rails and some Ruby errors. You're (I'm) not always sure where it's coming from. Sometimes you just have to try different things. Don't give up. Save your code and go read some other articles. One that is official is fine but it's not the final word. Millions of other users are out there trying to make things work for them also.
At least you have logging enabled don't you? I hope that is where you got your post for the error on here. If not, go find out how to use it. Then post it with your saved app.
Another great place to get some learning and some code is the Heroku Dev Center. Such as https://devcenter.heroku.com/articles/getting-started-with-rails4
Have fun!
Something you can play with but is a little insecure is environmental variables.
Try this in routes.rb
root 'application#env_vars'
and this in application_controller.rb
def env_vars
vars = request.env.each
render plain: "env #{vars.each {|v| v}}"
end
Almost as bad as chasing those stack traces.
If you have ever played around with Sinatra then you see that Rails routes
are very similar because that's what Rack is for.
get '/vars' => 'application#env_vars'
is just an HTTP GET request.
[URL]:[port]/map to controller-name#method or action as they call it.
Resources include more than just the controller as models are involved as well. MVC is the Rails way. It lets you create all the parts at one time through the generators. But trains really use alternators these days. ;-)
Totally stumped on this. I can not get past this
class AfterSignupController < Wicked::WizardController
before_filter :authenticate_user!
steps :complete_basic_profile, :complete_skills, :complete_address, :complete_avatar
def show
#person = current_user.person
render_wizard
end
def update
#person = current_user.person
#person.update(params[:person])
render_wizard #person
end
def after_signup_params
params.require(:person).permit(:first_name, :last_name, :headline, :description)
end
def person_params
params.require(:person).permit(:first_name, :last_name, :headline, :description)
end
end
The form is posting
"person"=>{"first_name"=>"Job", "last_name"=>"Seeker", "headline"=>"", "description"=>""}
Yet I cannot get past this error
Started PATCH "/after_signup/complete_basic_profile" for 127.0.0.1 at 2013-09-23 22:10:53 +0800
DEPRECATION WARNING: Using #scope without passing a callable object is deprecated. For example `scope :red, where(color: 'red')` should be changed to `scope :red, -> { where(color: 'red') }`. There are numerous gotchas in the former usage and it makes the implementation more complicated and buggy. (If you prefer, you can just define a class method named `self.red`.). (called from <class:User> at /home/user/workspace/testappapp/models/user.rb:36)
/home/user/.rvm/gems/ruby-2.0.0-p247/bundler/gems/twitter-bootstrap-rails-40ffd567ee6b/app/helpers/bootstrap_flash_helper.rb:2: warning: already initialized constant BootstrapFlashHelper::ALERT_TYPES
/home/user/.rvm/gems/ruby-2.0.0-p247/bundler/gems/twitter-bootstrap-rails-40ffd567ee6b/app/helpers/bootstrap_flash_helper.rb:2: warning: previous definition of ALERT_TYPES was here
Processing by AfterSignupController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"8t8UNlC8kfbAj+RUtz1LzRywrvtoAEBD7elR2C88KfU=", "person"=>{"first_name"=>"Job", "last_name"=>"Seeker", "headline"=>"", "description"=>""}, "commit"=>"Continue", "id"=>"complete_basic_profile"}
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
Person Load (0.3ms) SELECT `people`.* FROM `people` WHERE `people`.`user_id` = 1 ORDER BY `people`.`id` ASC LIMIT 1
(0.2ms) BEGIN
(0.1ms) ROLLBACK
Completed 500 Internal Server Error in 153ms
ActiveModel::ForbiddenAttributesError - ActiveModel::ForbiddenAttributesError:
activemodel (4.0.0) lib/active_model/forbidden_attributes_protection.rb:21:in `sanitize_for_mass_assignment'
activerecord (4.0.0) lib/active_record/attribute_assignment.rb:21:in `assign_attributes'
activerecord (4.0.0) lib/active_record/persistence.rb:229:in `block in update'
activerecord (4.0.0) lib/active_record/transactions.rb:326:in `block in with_transaction_returning_status'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `block in transaction'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/database_statements.rb:210:in `within_new_transaction'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `transaction'
activerecord (4.0.0) lib/active_record/transactions.rb:209:in `transaction'
activerecord (4.0.0) lib/active_record/transactions.rb:323:in `with_transaction_returning_status'
activerecord (4.0.0) lib/active_record/persistence.rb:228:in `update'
app/controllers/after_signup_controller.rb:18:in `update'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:433:in `_run__108139916925402627__process_action__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
remotipart (1.2.1) lib/remotipart/middleware.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__245650492627359150__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
better_errors (1.0.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (1.0.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (1.0.1) lib/better_errors/middleware.rb:56:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/home/user/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
/home/user/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
/home/user/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
def update
#person = current_user.person
#person.update(person_params)
render_wizard #person
end
Read about Strong Parameters