Tag: ruby on rail

Rails:如何将params从一种forms传递到另一种forms

这是我的情况:我有表格,网站的任何访客都可以填写。 当然,如果他/她想要提交,他们必须是用户。 因此,当他们点击“提交”时,他们会被带到注册/页面中。 那是因为我需要一个“user_id”才能保存原始表单中的数据。 我想做的是从原始forms(params [:site])中获取params,而不是在创建操作中提交它们,我想等到用户创建了一个帐户。 这将允许我避免在没有用户ID的情况下将站点信息保存到数据库。 我可以在我的网站/创建方法中添加一些代码,就像这样。 def create @site = Site.new(params[:site]) unless current_user? redirect_to new_user_session_path, sites_form_data: params[:site] end if @site.save # … end 但是,一旦我让用户创建帐户,我不确定如何抓住params [:site]? 我正在为这个项目使用Devise,因此可能会对工作产生影响。 我想知道我是否必须覆盖原来的设计控制器,就像这个家伙那样: http : //rorguide.blogspot.com/2011/04/overwrite-devise-registrations.html 我想我也可以将数据存储在cookie中。 但我不知道何时访问该cookie,提取数据并保存到数据库。 用户创建后,肯定。 但它应该是用户模型的回调吗? 它应该去哪里? 我很感激任何建议或意见。

如何为访客用户正确配置Devise + Cancan

在Rails 3.2应用程序中,我使用的是Devise + CanCan。 该应用程序以前仅限制登录用户的访问权限。 我正在添加一个Guest用户/能力,可以阅读该网站的某些部分。 我无法理解设置它的“正确”方法,特别是before_filter :authenticate!组合before_filter :authenticate! 控制器中需要load_and_authorize_resource 。 在努力实现这一目标时,我已将能力等级降至最低。 #Ability.rb class Ability include CanCan::Ability def initialize(user_or_admin) user_or_admin ||= User.new can :manage, :all end end 在无模型/静态页面Home控制器中 #home_controller.rb class HomeController < ApplicationController load_and_authorize_resource def index …some stuff end end 和 #application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery before_filter :authenticate! …more stuff end 通过此设置,未登录的用户将被重定向到Devise登录页面。 如果我删除before_filter :authenticate! […]

如何从Rails应用程序中完全删除Yarn?

我正在使用jQuery和其他一些库构建一个Rails 5.1.x rails应用程序。 Rails坚持开Yarn,这在开发机器上很好,但我不能在生产中使用它。 有没有办法在没有导轨的情况下默认使用Yarn? 删除yarn.lock和node_modules以及随附的所有其他内容。

无法在ruby 2.3.1上安装rails gem

我试图在ruby 2.3.1上安装rails。 $ ruby -v ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux] Ruby已安装。 $ rvm -v rvm 1.26.11 (latest) by Wayne E. Seguin , Michal Papis [https://rvm.io/] RVM存在。 $ gem install rails Building native extensions. This could take a while… ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /usr/local/rvm/gems/ruby-2.3.1/gems/nokogiri-1.7.0.1/ext/nokogiri /usr/local/rvm/rubies/ruby-2.3.1/bin/ruby -r […]

允许用户在使用Twitter登录时输入他们的电子邮件(OmniAuth)

我正在使用omn​​iauth-twitter ,我已经完成了所有设置: user.rb: def self.create_with_omniauth(auth) create! do |user| user.provider = auth[“provider”] user.uid = auth[“uid”] user.name = auth[“info”][“name”] user.email = auth[“info”][“email”] # To pass password validation user.password = user.password_confirmation = SecureRandom.urlsafe_base64(n=6) end end sessions_controller.rb: def create user = User.find_by_email(params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) sign_in user redirect_back_or user else flash.now[:error] = ‘Invalid email/password combination’ render ‘new’ end […]

耙顺序任务

我遇到了一个非常奇怪的问题。 我有一个任务,重置我的数据库,因为: task :reset => [:drop, :create, :migrate, :seed] 问题是,我在播种时收到错误,因为在后期迁移文件中添加了缺少的列。 一个例子: undefined method new_attr= for User 然而,此属性已在迁移中添加。 奇怪的是,如果我单独执行上述任务,我不会收到任何错误。 任何人都能解释一下吗? 当然,这些任务不能异步运行。 避免错误的另一种方法是使用新属性修改我之前的迁移create_。 然后运行:reset不会触发这些属性的错误。 迁移显然很好,因为我可以单独运行上述任务,而不是捆绑在单个任务下。

从youtube登录OAuth保存用户的性别和位置

我有使用OAuth2的youtube登录设置,并且在用户注册成功后,我想将用户性别和位置保存在数据库中。 检查OAuth文档https://developers.google.com/accounts/docs/OAuth2Login#userinfocall,您可以看到您可以访问用户的性别和位置以及姓名,电子邮件和个人资料图片等内容。 下面是我将用户信息保存到数据库的代码 user.rb def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| user.provider = auth.provider user.uid = auth.uid user.name = auth.info.name user.email = auth.info.email user.picture = auth.info.image user.gender = auth.info.gender user.country = auth.info.locale user.oauth_token = auth.credentials.token user.oauth_expires_at = Time.at(auth.credentials.expires_at) user.save! end end 但是使用auth.info.USER_INFO配置似乎不会将这些值保存到数据库中。 我错过了什么吗? 以下是我的应用程序要求的参数,没有任何范围。 UPDATE 我通过传入userinfo.profile参数的额外范围来实现此目的。 请记住包含没有逗号分隔的完整url。 Rails.application.config.middleware.use OmniAuth::Builder do provider :youtube, YOUTUBE_KEY, YOUTUBE_SECRET, { :scope […]

从数据远程和html搞乱链接的Kaminari索引

我有一个模型(嵌套)的索引视图,它永远不会从模型中调用,而是从几个不同的模型中呈现。 一个视图可以使用JS或html呈现索引。 使用JS是在show视图中的#related div和数据远程链接。 另一个选项使用相同的控制器操作来呈现它只有html。 一切都很好,直到我加入Kaminari分页。 在整页视图中,没有#related div,因此分页不起作用。 我把胆量分成了一个部分并添加了一个#related div并渲染了部分。 从js我刚刚从JS渲染部分。 这在整个页面视图中运行良好,但在显示页面中它将呈现部分,但链接不起作用,看起来它呈现整个显示页面。 在另一个选项卡上关闭,然后返回到“进度”选项卡,加载部分和所有工作正常。 只是在显示页面的初始加载,我无法使页面链接工作。 我可以加载另一个不首先使用分页的选项卡并解决我的问题,但这是您转到此页面的主要信息。 有任何想法吗? 编辑请求代码 控制器动作方法。 此控制器中的索引方法还设置@progressions def progressions authorize! :read, Progression @stage = Stage.find(params[:id]) @progressions = @stage.progressions_by_score.page(params[:page]).per(20) if params[:status] && !params[:status].blank? && @progressions @progressions = @progressions.where(status: params[:status]).page(params[:page]).per(20) end respond_to do |format| format.js format.html {render :template => “progressions/index”} end end 阶段视图中的progressions.js.erb文件 $(“#related”).html(“”); 显示视图中的关系div。 […]

Ruby on Rails,delayed_job

我正在使用这个gem作为我的应用程序。 我找不到我需要的参数。我的控制器中有两个function:创建和分析。 我想在调用create analyse-method后5分钟后运行一个analyse-method ,或者我在模型中还有一个函数:进程我希望在5分钟后运行一个anylse-method (来自控制器),当一个进程方法是调用。 我找到了这样的smt: handle_asynchronously :in_the_future, :run_at => Proc.new { 5.minutes.from_now } 但它没有说它应该被称为function之后。 编辑:我试图延迟我的工作,它似乎保存了一切,问题是1分钟后它没有运行perform_analysis方法。 可能是什么问题? 模型: after_create :process_name, :perform_analysis def perform_analysis list=Analysis.do_picture_analyse update_image_url(list) end handle_asynchronously :perform_analysis, :run_at => Proc.new { 1.minutes.from_now } SQL(8.3ms)INSERT INTO“delayed_jobs”(“尝试”,“created_at”,“failed_at”,“handler”,“last_error”,“locked_at”,“locked_by”,“priority”,“queue”,“run_at” ,“updated_at”)VALUES(?,?,?,?,?,?,?,?,?,?,?)[[“尝试”,0],[“created_at”,星期六,2013年3月16日14: 30:19 UTC +00:00],[“failed_at”,nil],[“handler”,“—!ruby / object:Delayed :: PerformableMethod \ nobject:!ruby / ActiveRecord:Arraydb \ n属性:\ n id:45 \ n […]

设计:将“电子邮件”替换为替代登录

我尝试使用Sublime的“替换所有文件”function在整个应用程序中用accountnumber替换email 。 我重置并重新迁移了数据库,但是,在注册时我仍然收到以下错误: undefined method `email’ for # 然后是以下参数 {“utf8″=>”✓”, “authenticity_token”=>”2qqA7dx99hx+VqkZGDmySNJd+2Fzxuanegy1ysrpD30=”, “account”=>{“accountnumber”=>”1307”, “password”=>”[FILTERED]”, “password_confirmation”=>”[FILTERED]”}, “commit”=>”Sign up”} 以前有人有这个困难吗?