在轨道中使用Surveyor gem实施调查

时间:2015-11-26 21:14:02

标签: ruby-on-rails ruby-on-rails-4 surveyor-gem

我正在尝试使用rails中的surveyor gem实施调查。我想利用用户ID来跟踪哪个用户创建调查,以及哪个用户对哪个调查做出了响应。

问题是我没有将Devise gem用于我的用户登录和注册。我手动构建它。 surveyor gem使用Devise的辅助方法current_user,它返回有关当前用户的详细信息。

既然,我没有使用设计,我不知道在哪里添加辅助方法current_user。

我不确定要发布的代码,所以请评论所需的详细信息。我会根据需要编辑我的帖子。

谢谢!

application_controller.rb

  class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_filter :authorize
helper_method :current_user
protected
  def authorize
    return true if ((self.class == SessionsController)|| (self.class == UsersController && (self.action_name == "new" || self.action_name == "create")))
    unless (User.find_by_id(session[:user_id]))
        redirect_to url_for(:controller => :sessions , :action => :new), alert: "You need to be logged in."
    end
   end

def current_user
    @current_user = User.find(session[:user_id])
end
end

以下是使用current_user方法的Surveyor gem控制器的链接:https://github.com/kjayma/surveyor_gui/blob/master/app/controllers/surveyor_gui/survey_controller.rb

1 个答案:

答案 0 :(得分:0)

以下是实现current_user方法的一种可能解决方案。

helper_method会使ApplicationController方法在每个控制器中都可用,它继承自class ApplicationController helper_method :current_user def current_user @current_user ||= User.find(session[:user_id]) if session[:user_id] end end

 <input type="file" accept="image/*" id="picture1" class="picture"/>