Articles of ruby on rails 4

Digest :: Digest已弃用; 使用摘要

我收到以下错误 Digest::Digest is deprecated; use Digest 当我尝试启动我的rails服务器。 我试图在我的源代码中搜索Digest::Digest但我没有在任何地方使用它。 任何想法如何解决? 只有我正在使用的地方是 @alias = Digest::MD5.hexdigest(phone)

如何创建一个自动将用户登录到devise / rails的链接?

我正在尝试让已注册用户在我的网站上执行某些操作,因此我希望通过电子邮件直接发送此操作的链接。 问题是我希望在点击该链接时自动登录。 我可以做一些明显的事情,比如创建一个独特的令牌并通过url mysite.com/my_funky_action?login_bypass_token=af123fa127ba32传递它,但这在我看来是一个“以前解决过很多次”的问题。 那么,使用rails / devise有一个简单的方法可以做到这一点吗? 我搜索了设计文档但没有成功。

Rails服务器上的NoMethodError

我正在尝试启动Rails服务器,但是我收到以下错误并且服务器关闭。 我怀疑我错过了一个依赖,但我是一个Ruby noob,所以我很可能是错的。 => Booting WEBrick => Rails 4.1.0 application starting in development on `http://0.0.0.0:3000` => Run `rails server -h` for more startup options => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (–binding option) => Ctrl-C to shutdown server Exiting /Users/darrin/inventory/vendor/ruby/2.1.0/gems/railties-4.1.0/lib/rails/commands/server.rb:133:in `log_to_stdout’: undefined method `formatter’ for nil:NilClass (NoMethodError) from /Users/darrin/inventory/vendor/ruby/2.1.0/gems/railties-4.1.0/lib/rails/commands/server.rb:67:in `start’ […]

Rake任务似乎忽略了database.yml配置

我正在使用MAC OS X以及通过Homebrew安装的postgresql。 我正在开发使用Rails 4.2.1和ruby 2.2.0。 与postgresql服务器的连接很好,但由于某种原因,每个应用程序都访问数据库“kstavrou”,这是我的系统用户名,作为开发数据库,​​并创建数据库.yml定义的其余部分。 如果你有超过1个rails应用程序,这很麻烦。 rake db:创建输出: Konstantinoss-MacBook-Pro:ecomm-intel kstavrou $ rake db:create kstavrou已经存在 ecomm_intel_test已经存在 奇怪的是,如果我清空database.yml仍然可以很好地连接到postgresql并尝试再次创建数据库“kstavrou”执行所有迁移,而不尝试创建测试数据库。 rake db:创建输出: Konstantinoss-MacBook-Pro:ecomm-intel kstavrou $ rake db:create kstavrou已经存在 database.yml的 default: &default adapter: postgresql host: localhost encoding: utf8 username: pguser password: 123456 pool: 5 production: <<: *default database: ecomm_intel_prod development: <<: *default database: ecomm_intel_dev test: <<: *default database: […]

Rails中的共享JS(咖啡)

如果我想在app / assets / javascript下的不同文件之间共享一些JavaScript函数,那么组织目录结构的最佳方法是什么? 假设我有shared.js.coffee sharedFunction = -> ‘Hello ‘ 现在,我如何在其他地方使用它? 就像这里一样,在welcome.js.coffee中 welcome = (name) -> sharedFunction() + name 如何才能首先加载 shared.js.cofee ? 我试着把它放在application.js的最开头,但它没有改变任何东西。 似乎共享文件加载时间太长, 欢迎管理开始执行并注意到未定义sharedFunction。

嵌套表格:如果没有输入儿童信息,则不应保存

我有一个嵌套的表单来注册一个新的组织和一个成员(1:组织与其成员之间的很多关系)。 两者都在模型文件和迁移文件中都有validation。 问题 :如果没有正确输入两者的信息,我希望表格不要注册任何东西(不是组织或成员)。 目前,当我注册一个新组织但是将该成员的所有变量都留空时,它会在没有错误消息的情况下注册该组织,并且它不会注册任何成员。 相反,我希望它也尝试编写成员,然后生成错误消息,因为成员的某些变量不允许为空。 由于该错误,它不应该保存组织,直到成员信息也是正确的。 如果我为成员输入一些信息,这确实可以正常工作:如果该成员随后无效,则不会保存组织或成员并给出错误。 如果我输入成员的有效信息而没有组织信息,它也能正常工作:它会产生错误并且不会保存任何内容。 但是如果我为组织输入有效信息而没有成员信息则不起作用:它不会产生任何错误并仅保存组织。 我应该如何更改我的代码来调整它? 风景: 部分/forms: Details of the organization: Your personal details: 和控制器: def new if (logged_in?) flash[:danger] = “You’re already logged in” redirect_to root_url end @organization = Organization.new @member = @organization.members.build end def create @organization = Organization.new(new_params) if @organization.save @organization.members.each do |single_member| single_member.send_activation_email end flash[:success] = […]

没有Id:Rails 4自定义控制器动作,找不到

我正在尝试为某些数据创建一个JSON提要,以便将其部署到我所拥有的图形中。 我一直遇到“找不到没有Id的大坝”,而且没有任何关于SO的答案似乎都有解决方法。 我的参数似乎正在通过罚款,我有点困惑。 的routes.rb require “resque/server” Rails.application.routes.draw do mount Resque::Server, :at => “/resque” root ‘home#index’ get ‘about’, to: ‘home#about’ resources :dams, only: [:index, :show] do get ‘count_data’, to: ‘dams#count_data’ resources :fish_counts, only: [:index, :show] end resources :fish end dams_controller.rb中的自定义操作: def count_data @dam = Dam.includes(:fish_counts, :fish).friendly.find(params[:id]) @fish_counts = FishCount.for_year(Date.today.year).where(“dam_id =?”, @dam.id).limit(200).order(count_date: :desc) respond_to do |format| format.json […]

Rails 4嵌套表单 – 没有将Symbol隐式转换为Integer

在我的rails 4 app中,我有一个三重嵌套路线: devise_for :users do resources :foo do resources :marflar end end 我有一个用于创建带有嵌入式Marflar对象的新Foo的表单: 但是当我提交表格时,我得到: TypeError in FoosController#create no implicit conversion of Symbol into Integer 我的Foo控制器的相关部分如下所示: def new @foo = current_user.foos.build @foo.marflars.build end def create @foo = Foo.new(foo_params) if @foo.save redirect_to @foo else render action: ‘new’ end end .. def foo_params params.require(:foo).permit(:foo_attr, marflars_attributes: [:marflar_attr]) end […]

包含,选择,排序,限制多个模型(单个查询)

我需要创建一个包含以下表中数据的查询: *对话 :在用户之间对消息进行分组的模型 class Conversation :conversation_participants ## Attributes title, created_at, updated_at end * ConversationParticipant :跟踪对话用户的模型 class ConversationParticipant < ActiveRecord::Base ## Associations belongs_to :conversation belongs_to :user ## Attributes conversation_id, user_id, seen, created_at, updated_at end *消息 :保持跟踪内容和发件人的模型 class Message “User” ## Attributes sender_id, content, conversation_id, created_at, updated_at end *用户 :具有属性name的模型 如何在单个查询中获取以下内容? (5)来自uniq Conversation 消息的最近消息的限制 来自ConversationParticipant的 user_id = […]

Rails – 后台作业中的ActionDispatch :: Http :: UploadedFile

我正在使用与导入csv和excel Railscast类似的想法,但由于该剧集中的标准代码需要一些时间来处理(使用ActiveRecord为文件中的每一行创建新记录)我在Heroku上获得超时并希望将导入过程移至后台作业。 我没有成功将文件变量(类型为ActionDispatch :: Http :: UploadedFile)发送到作业,所以我发送了file.original_filename和file.path的各个变量。 作业失败,错误file /var/folders/q3/xn0bp7yd2m56_4lbq0069jj80000gn/T/RackMultipart20150319-72431-1a4pnja.xlsx does not exist ,我认为这种情况正在发生,因为该文件在作业开始之前已被删除: 上传的文件是临时文件,其生命周期是一个请求。 当对象完成后,Ruby取消链接文件,因此不需要使用单独的维护任务来清除它们。 ActionDispatch :: HTTP :: UploadedFile的 使用ActionDispatch :: Http :: UploadedFile上传的文件是否可以在后台作业中使用? 我正在使用Rails 4.2,ActiveJob和Resque