Rails 3.2.17 NoMethodError in VideosController#create -
i'm new ruby on rails , trying create relatively simple web application next guide: http://www.sitepoint.com/youtube-rails/. i've come point code in place still getting nomethoderror in videoscontroller#create
:
undefined method `uid=' #<video:0x007fb066c41d28>
app/controllers/videos_controller.rb
class videoscontroller < applicationcontroller def index @videos = video.order('created_at desc') end def new @video = video.new end def create @video = video.new(params[:video]) if @video.save flash[:success] = 'video added!' redirect_to root_url else render 'new' end end end
app/models/video.rb
class video < activerecord::base attr_accessible :link yt_link_format = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/i validates :link, presence: true, format: yt_link_format before_create -> uid = link.match(yt_link_format) self.uid = uid[2] if uid && uid[2] if self.uid.to_s.length != 11 self.errors.add(:link, 'is invalid.') false elsif video.where(uid: self.uid).any? self.errors.add(:link, 'is not unique.') false else get_additional_info end end private def get_additional_info begin client = youtubeit::oauth2client.new(dev_key: '<my_dev_key>') video = client.video_by(uid) self.title = video.title self.duration = parse_duration(video.duration) self.author = video.author.name self.likes = video.rating.likes self.dislikes = video.rating.dislikes rescue self.title = '' ; self.duration = '00.00.00' ; self.author = '' ; self.likes = 0 ; self.dislikes = 0 end end def parse_duration(d) hr = (d / 3600).floor min = ((d - (hr * 3600)) / 60).floor sec = (d - (hr * 3600) - (min * 60)).floor hr = '0' + hr.to_s if hr.to_i < 10 min = '0' + min.to_s if min.to_i < 10 sec = '0' + sec.to_s if sec.to_i < 10 hr.to_s + ':' + min.to_s + ':' + sec.to_s end end
full trace
activemodel (3.2.17) lib/active_model/attribute_methods.rb:407:in `method_missing' activerecord (3.2.17) lib/active_record/attribute_methods.rb:149:in `method_missing' app/models/video.rb:10:in `block in <class:video>' activesupport (3.2.17) lib/active_support/callbacks.rb:407:in `_run__3695319422649908747__create__1619689881822406221__callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.17) lib/active_support/callbacks.rb:385:in `_run_create_callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:81:in `run_callbacks' activerecord (3.2.17) lib/active_record/callbacks.rb:268:in `create' activerecord (3.2.17) lib/active_record/persistence.rb:348:in `create_or_update' activerecord (3.2.17) lib/active_record/callbacks.rb:264:in `block in create_or_update' activesupport (3.2.17) lib/active_support/callbacks.rb:403:in `_run__3695319422649908747__save__1619689881822406221__callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.17) lib/active_support/callbacks.rb:385:in `_run_save_callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:81:in `run_callbacks' activerecord (3.2.17) lib/active_record/callbacks.rb:264:in `create_or_update' activerecord (3.2.17) lib/active_record/persistence.rb:84:in `save' activerecord (3.2.17) lib/active_record/validations.rb:50:in `save' activerecord (3.2.17) lib/active_record/attribute_methods/dirty.rb:22:in `save' activerecord (3.2.17) lib/active_record/transactions.rb:259:in `block (2 levels) in save' activerecord (3.2.17) lib/active_record/transactions.rb:313:in `block in with_transaction_returning_status' activerecord (3.2.17) lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' activerecord (3.2.17) lib/active_record/transactions.rb:208:in `transaction' activerecord (3.2.17) lib/active_record/transactions.rb:311:in `with_transaction_returning_status' activerecord (3.2.17) lib/active_record/transactions.rb:259:in `block in save' activerecord (3.2.17) lib/active_record/transactions.rb:270:in `rollback_active_record_state!' activerecord (3.2.17) lib/active_record/transactions.rb:258:in `save' app/controllers/videos_controller.rb:12:in `create' actionpack (3.2.17) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (3.2.17) lib/abstract_controller/base.rb:167:in `process_action' actionpack (3.2.17) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (3.2.17) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (3.2.17) lib/active_support/callbacks.rb:414:in `_run__333554687839828986__process_action__1999722818964258122__callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.17) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.17) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (3.2.17) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (3.2.17) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' activesupport (3.2.17) lib/active_support/notifications.rb:123:in `block in instrument' activesupport (3.2.17) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (3.2.17) lib/active_support/notifications.rb:123:in `instrument' actionpack (3.2.17) lib/action_controller/metal/instrumentation.rb:29:in `process_action' actionpack (3.2.17) lib/action_controller/metal/params_wrapper.rb:207:in `process_action' activerecord (3.2.17) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (3.2.17) lib/abstract_controller/base.rb:121:in `process' actionpack (3.2.17) lib/abstract_controller/rendering.rb:45:in `process' actionpack (3.2.17) lib/action_controller/metal.rb:203:in `dispatch' actionpack (3.2.17) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' actionpack (3.2.17) lib/action_controller/metal.rb:246:in `block in action' actionpack (3.2.17) lib/action_dispatch/routing/route_set.rb:73:in `call' actionpack (3.2.17) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' actionpack (3.2.17) lib/action_dispatch/routing/route_set.rb:36:in `call' journey (1.0.4) lib/journey/router.rb:68:in `block in call' journey (1.0.4) lib/journey/router.rb:56:in `each' journey (1.0.4) lib/journey/router.rb:56:in `call' actionpack (3.2.17) lib/action_dispatch/routing/route_set.rb:608:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' rack (1.4.5) lib/rack/etag.rb:23:in `call' rack (1.4.5) lib/rack/conditionalget.rb:35:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/head.rb:14:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/params_parser.rb:21:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/flash.rb:242:in `call' rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context' rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/cookies.rb:341:in `call' activerecord (3.2.17) lib/active_record/query_cache.rb:64:in `call' activerecord (3.2.17) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (3.2.17) lib/active_support/callbacks.rb:405:in `_run__469011070482330715__call__1619689881822406221__callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.17) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' activesupport (3.2.17) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.17) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/reloader.rb:65:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' railties (3.2.17) lib/rails/rack/logger.rb:32:in `call_app' railties (3.2.17) lib/rails/rack/logger.rb:16:in `block in call' activesupport (3.2.17) lib/active_support/tagged_logging.rb:22:in `tagged' railties (3.2.17) lib/rails/rack/logger.rb:16:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/request_id.rb:22:in `call' rack (1.4.5) lib/rack/methodoverride.rb:21:in `call' rack (1.4.5) lib/rack/runtime.rb:17:in `call' activesupport (3.2.17) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.4.5) lib/rack/lock.rb:15:in `call' actionpack (3.2.17) lib/action_dispatch/middleware/static.rb:63:in `call' railties (3.2.17) lib/rails/engine.rb:484:in `call' railties (3.2.17) lib/rails/application.rb:231:in `call' rack (1.4.5) lib/rack/content_length.rb:14:in `call' railties (3.2.17) lib/rails/rack/log_tailer.rb:17:in `call' rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service' /users/<user_name>/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' /users/kappe/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' /users/kappe/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
i hope i've given plenty information. think going on in video.rb uid , self.uid set don't have plenty knowledge solve problem. can help me this? in advance!
undefined method `uid=' #
the error because there no uid
attribute in videos
table.
you should add together attribute through migration
adduidtovideo uid:string
this create migration file adding uid column table
do rake db:migrate
ruby-on-rails-3 nomethoderror
No comments:
Post a Comment