小编Mat*_*ani的帖子

是否有Rails控制台命令(Rails 3+)重新加载更改的代码?

我正在玩控制台,我改变了一些模型代码,现在我想测试它.我通常会重新启动控制台.有更快的方法吗?也许是一个控制台命令来重新加载模型代码?

ruby ruby-on-rails ruby-on-rails-3

60
推荐指数
2
解决办法
2万
查看次数

Factory_girl,关联和after_initialize问题

我有一个如此定义的Family类:

class Family < ActiveRecord::Base
  after_initialize :initialize_family
  belongs_to :user
  validates :user, 
       :presence => true

  validates :name,   
       :presence => true,          
       :length => { :maximum => 30 },
       :format => { :with => /\A[a-zA-Z0-9\-_\s\']+\z/i}

  def initialize_family
    if self.name.blank? && self.user
        self.name = "#{self.user.profile_full_name}'s Family"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的工厂里.我有:

Factory.define :family do |f|
   f.association :user, :factory => :user
end
Run Code Online (Sandbox Code Playgroud)

在我的family_spec.rb中,我有

let(:family) { Factory(:family) }
Run Code Online (Sandbox Code Playgroud)

但这失败了:

1) Family is valid with valid attributes
     Failure/Error: let(:family) { Factory(:family) }
     ActiveRecord::RecordInvalid:
       Validation failed: Name can't be …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3 factory-bot

21
推荐指数
2
解决办法
4876
查看次数

在 Rails 3 中,如何解析 ISO8601 日期字符串以获取 TimeWithZone 实例?

这是我的解决方案。有没有更紧凑的?

> time_from_client = "2001-03-30T19:00:00-05:00"
 => "2001-03-30T19:00:00-05:00" 

> time_from_client.to_datetime
 => Fri, 30 Mar 2001 19:00:00 -0500 

> timezone_offset = time_from_client.to_datetime.offset.numerator
 => -5 

> tz = ActiveSupport::TimeZone[timezone_offset]
 => (GMT-05:00) America/New_York

> tz.class
=> ActiveSupport::TimeZone 
Run Code Online (Sandbox Code Playgroud)

timezone ruby-on-rails date iso8601

5
推荐指数
1
解决办法
4738
查看次数

将纯文本转换为html

我的rails 3应用程序接收电子邮件.其中一些是纯文本.当应用程序将它们显示给用户时,我希望它们被正确格式化.换句话说,我想将纯文本编码为html.例如:"Hello \n \nHello"=>

你好

你好

(或类似的东西).

当然我可以编写自己的4行代码,但我确信这4行已经编写,测试并包装在一些不错的方法调用中.

ruby ruby-on-rails ruby-on-rails-3

3
推荐指数
2
解决办法
7265
查看次数

Rails 3简单的AJAX删除无法正常工作,因为authenticity_token不随请求一起发送

我正在提交一个简单的ajax删除请求,如下所示:

#invitation_actions
  =link_to "delete", invitation_path(invitation), :method=>:delete, :remote=>true, :class=>"remove", :confirm=>'Are you sure you?'
Run Code Online (Sandbox Code Playgroud)

请注意,由于所有页面中都包含csrf_meta_tag标记,包含请求的页面包含authenticity_token.

当我查看日志时,我看到删除请求缺少authenticity_token:

在2011-04-22 11:21:21 -0700开始DELETE"/ invitations/5"for 127.0.0.1在InvitationsController处理#dump as参数:{"id"=>"5"}

现在,如果我从代码中删除":remote =>:true",即我执行常规页面加载删除工作,我在日志文件中看到以下内容:

在2011-04-22 12:52:19 -0700开始POST"/ invitations/10"for 127.0.0.1在InvitationsController处理#Drown as HTML参数:{"authenticity_token"=>"qlT8uX/WGQeOQSmVZzw1v8rFdSTHDRbzNY0zpSc9mV0 =","id" => "5"}

为什么它是AJAX案例中的DELETE和非AJAX案例中的POST?为什么DELETE不包含authenticity_token?

谢谢你的帮助.

ajax ruby-on-rails ujs ruby-on-rails-3

2
推荐指数
1
解决办法
2586
查看次数