Tag: ruby on rails 4

Rails.application.routes.url_helpers崩溃Heroku应用程序

我正在为Collection + Json构建一个Serializer ,我正在编写一个API作为示例。 在Heroku上部署的应用程序上使用Rails.application.routes.url_helpers时遇到问题。 我在一个序列化器中使用它: Rails.application.routes.url_helpers.bills_url 在开发中,一切正常。 但是,在Heroku上,这会引发错误: undefined method ‘bills_url’ for # (NoMethodError) 。 如果我转储Rails.application.routes.url_helpers.methods ,则不会列出_url或_path方法。 但是,如果我在控制台中运行相同的代码,它们就是: heroku run rails c –app myapp > Rails.application.routes.url_helpers.methods > # => :bills_url is present 这很奇怪。 这有什么线索吗? Heroku是否使url_helpers不可用? 我绝对迷路了。 我google了很多但没有发现任何东西。 这是完整跟踪的错误报告 。 谢谢。

允许在DeviseTokenAuth中传递数组强参数

我遇到了强大的params问题,在Devise Token Auth gem LINK中传递了一个数组 # ERROR Unpermitted parameters: options 配置允许的参数 def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) << [:username, options: []] end # also added in User.rb file attr_accessor :options 我尝试了很多选项,但它不允许我传递数组中的数据。 有什么解决方案吗? 谢谢!

Ruby on Rails环境变量用于开发环境

只是一个我无法在stackoverflow上找到答案的快速问题。 如果很容易为登台和生产提供环境变量(例如在heroku上),我该如何为我的localhost(开发环境)设置环境变量? (我在Mac上) 截至今天,我为开发环境硬编码我的api凭证,我对此感到不舒服。 谢谢 !

Rails中的单表inheritance4

我试图在Rails 4中实现一个简单的STI,但是我还有一些东西无法实现。 我有以下课程: class Person < ActiveRecord::Base end class NaturalPerson < Person end class LegalPerson < Person end class Employee < NaturalPerson end class Customer < NaturalPerson end 问题是,我有一些属性,我只想从Employee类访问,有些只来自Customer等,但我找不到方法。 如果我要使用Rails 3的方式,我会用attr_accesible解决它。 但现在这是不可能的,因为我既不使用attr_accesiblegem,也不愿意。

合并嵌套属性

我有一个使用post,评论和作者模型的样本。 请从以下主题中查看我的完整要求 嵌套路由和CRUD操作以及Rails中的附加值 在这里,我需要在创建post时创建一个注释。 我使用嵌套属性并且工作正常。 但我的问题是我不想要用户的所有属性。 某些属性需要在内部添加。 如果属性没有嵌套属性,我可以合并。 但是合并不适用于嵌套属性。 我从这里得到了解决方案 现在我的params方法如下所示; private def create_params filtered_params = params.require(:post) .permit([:name, :description, comments_attributes: [:author_id, :comments]]) additional_params = {record_status: 1, comments_attributes: [record_status: 1]} result = filtered_params.merge(additional_params) do |key, oldval, newval| if newval.is_a? Array oldval ||= {} Hash[oldval.map {|k, v| [k, v.merge(newval.first)]}] elsif newval.is_a? Hash oldval ||= {} oldval.merge newval […]

清理视图ruby逻辑并将关注点分离到模型/控制器中

我想在我的主页上显示我的数据库中随机分类的6个工具。 我创建了一个带有主页操作的Pages控制器。 这是我的Pages控制器: class PagesController < ApplicationController def home @tools = Tool.all end end 然后在我的home.html.erb视图中,我使用.sample方法从我的数据库中抓取随机工具(我使用tool1,tool2,tool3等为每个变量重复6次): 我想知道是否有更好的方法来做到这一点。 在我看来,我似乎有逻辑,必须有办法将逻辑转移到其他地方? 我的模型,控制器等等。如何清理这些代码,以便它是好的rails代码? 或许这是很好的rails代码,我只是不知道它,因为我是一个初学者。

ActionMailer响应“501 5.5.4无效参数”

我正在使用Ruby 2.0.0上的Rails 4开发应用程序。 应用程序在Devise中注册后发送电子邮件。 这是发送电子邮件的代码: 应用程序/模型/ sponsor.rb: after_create :send_email_to_admin private def send_email_to_admin AdminMailer.new_sponsor_email(self).deliver end 应用程序/邮寄者/ admin_mailer.rb class AdminMailer < ActionMailer::Base default to: '**removed**' def new_sponsor_email(sponsor) @sponsor = sponsor p @sponsor mail(subject: "New Sponsor Registration") end end 这是从日志文件生成的电子邮件: Sent mail to **removed** (725.5ms) Date: Mon, 02 Sep 2013 15:01:03 -0400 From: **removed** To: **removed** Message-ID: Subject: […]

如何使用邮箱访问已发送邮件页面上的收件人

我正在使用mailboxer gem在rails应用程序中的ruby中发送消息。 gem在起作用。 我不能为我的生活弄清楚如何在发送的消息页面上访问收件人。 在发送的消息页面上,我试图遍历已发送的消息,并访问已发送消息的收件人并将该人员显示给用户。 在常规收件箱页面上,我使用了以下内容: 我正在尝试对发送的消息页面进行类似的查找,但我无法弄清楚如何执行此操作(特别是访问收件人的电子邮件)。 我不能用: #user wants to retrieve all his conversations user.mailbox.conversations #user wants to retrieve his inbox user.mailbox.inbox #user wants to retrieve his sent conversations user.mailbox.sentbox 因为没有办法用这些方法组织消息的显示方式(至少据我所知)。 如何遍历邮件并查找每封邮件的邮件收件人?

Ruby-on-rails 4性能下降

升级到Rails后,我看到了很多性能问题。 我最近将我的项目从Rails 2和Ruby 1.8升级到Rails 4和Ruby 2.0。 在互联网上阅读,我了解升级应该提供优秀的性能改进(高达30%)开箱即用。 不幸的是,我发现在某些情况下性能要差很多,例如以前需要大约20秒的一些报告,现在需要40秒。 我看过一些post表明垃圾收集可能是个问题。 在使用了一些推荐的设置之后,我发现一些较长的报告实际上更短,但是简短的报告仍然更糟糕。 作为升级的一部分,我已经转移到视图渲染的不显眼的javascript,但这似乎没有导致性能问题 – 大部分时间都花在模型中。 有人知道我是否缺少一些配置’陷阱’? 升级后是否有其他人遇到性能问题? 提前致谢。

使用FactoryGirl构建json存根

我尝试使用工厂构建一个json ,但是当我尝试build它时它是空的。 以下是Factory类。 require ‘faker’ FactoryGirl.define do factory :account do |f| f.name {Faker::Name.name} f.description {Faker::Name.description} end factory :accjson, class:Hash do “@type” “accountResource” “createdAt” “2014-08-07T14:31:58” “createdBy” “2” “disabled” “false” end end 以下是我试图建立的方式。 hashed_response = FactoryGirl.build(:accjson) expect(account.to_json).to eq(hashed_response.to_json); 但我的hashed_response似乎总是空object 。