Ruby on rails 语法错误,意外的“(”,应为关键字\u end

Ruby on rails 语法错误,意外的“(”,应为关键字\u end,ruby-on-rails,Ruby On Rails,我是一个初学者…我得到以下错误: SyntaxError - syntax error, unexpected '(', expecting keyword_end authorize @vote, :update?(user, record) ^ /Users/louismorin/code/CP299/app/controllers/votes_controller.rb:28: syntax

我是一个初学者…我得到以下错误:

SyntaxError - syntax error, unexpected '(', expecting keyword_end
            authorize @vote, :update?(user, record)
                                      ^
/Users/louismorin/code/CP299/app/controllers/votes_controller.rb:28: syntax error, unexpected ')', expecting '=':
  app/controllers/votes_controller.rb:28:in `'
  activesupport (4.0.5) lib/active_support/dependencies.rb:424:in `block in load_file'
  activesupport (4.0.5) lib/active_support/dependencies.rb:616:in `new_constants_in'
  activesupport (4.0.5) lib/active_support/dependencies.rb:423:in `load_file'
  activesupport (4.0.5) lib/active_support/dependencies.rb:324:in `require_or_load'
  activesupport (4.0.5) lib/active_support/dependencies.rb:463:in `load_missing_constant'
  activesupport (4.0.5) lib/active_support/dependencies.rb:184:in `const_missing'
  activesupport (4.0.5) lib/active_support/inflector/methods.rb:226:in `block in constantize'
  activesupport (4.0.5) lib/active_support/inflector/methods.rb:224:in `constantize'
  activesupport (4.0.5) lib/active_support/dependencies.rb:535:in `get'
  activesupport (4.0.5) lib/active_support/dependencies.rb:566:in `constantize'
  actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:76:in `controller_reference'
  actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:66:in `controller'
  actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:44:in `call'
  actionpack (4.0.5) lib/action_dispatch/journey/router.rb:71:in `block in call'
  actionpack (4.0.5) lib/action_dispatch/journey/router.rb:59:in `call'
  actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:674: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.5) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.0.5) 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.5) lib/action_dispatch/middleware/cookies.rb:486:in `call'
  activerecord (4.0.5) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.0.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
  activerecord (4.0.5) lib/active_record/migration.rb:373:in `call'
  actionpack (4.0.5) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.0.5) lib/active_support/callbacks.rb:373:in `_run__3205659148210679757__call__callbacks'
  activesupport (4.0.5) lib/active_support/callbacks.rb:80:in `run_callbacks'
  actionpack (4.0.5) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.0.5) lib/action_dispatch/middleware/reloader.rb:64:in `call'
  actionpack (4.0.5) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
  better_errors (2.0.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.0.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.0.0) lib/better_errors/middleware.rb:57:in `call'
  actionpack (4.0.5) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.0.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.0.5) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.0.5) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.0.5) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.0.5) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.0.5) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.0.5) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.0.5) 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.5) 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.5) lib/action_dispatch/middleware/static.rb:64:in `call'
  rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
  railties (4.0.5) lib/rails/engine.rb:511:in `call'
  railties (4.0.5) 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/louismorin/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
  /Users/louismorin/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
  /Users/louismorin/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

Here is my code for votes_controller.rb:

        class VotesController < ApplicationController
            before_action :load_post_and_vote


            def up_vote
                # http://apidock.com/rails/ActionController/Base/redirect_to
                update_vote!(1)
                redirect_to :back
            end

            def down_vote
                update_vote!(-1)
                redirect_to :back
            end

            private

            def load_post_and_vote
                # extract into this method the definition of @post and @vote
                @post = Post.find(params[:post_id])
                @vote = @post.votes.where(user_id: current_user)
            end

            def update_vote!(new_value)
                # Extract vote updating/creating logic here.
            # This method has access to @vote, because of the before_action
            if @vote
              authorize @vote, :update?(user, record)
              @vote.update_attribute(:value, 1)
            else
              @vote = current_user.votes.build(value: 1, post: @post)
              authorize @vote, :create?
              @vote.save
            end
          end
    end
当我删除用户时,记录从:更新?我得到错误数量的参数错误。我在尝试从“主题”页面向上投票帖子时遇到此错误

谢谢你的帮助

我用权威来授权

Pundit使用记录和用户参数初始化其策略对象,但随后会调用不带参数的方法。请查看ApplicationPolicy类中的update?方法。它可能不带参数


要解决此问题,只需将对象和方法作为符号进行feed授权:update?。记录和用户通过getter方法作为实例变量传入。

:update?user,record是不正确的Ruby语法。:update?表示不能接受参数的符号。您是指update?user,record?什么是授权方法?您忘记了吗结束更新\u vote!方法。结束其他方法我正在尝试调用此方法def update?用户,请记录can_mediate?结束发布授权方法。您可以发布您的投票控制器吗?投票控制器中是否有def update?我确实有点不同。
def update?(user, record)
    can_moderate?
  end
class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  include Pundit
  protect_from_forgery with: :exception
    before_action :configure_permitted_parameters, if: :devise_controller?


      rescue_from Pundit:NotAuthorizedError do |exception|
        redirect_to root_url, alert: exception.message
      end

    protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) << :name
    end
end