小编Ant*_*nAL的帖子

奇怪的ruby语法

Action Mailer Basics rails guide中的语法是什么?

class UserMailer < ActionMailer::Base
   def welcome_email(user)
      recipients    user.email
      from          "My Awesome Site Notifications <notifications@example.com>"
      subject       "Welcome to My Awesome Site"
      sent_on       Time.now
      body          {:user => user, :url => "http://example.com/login"}
   end
end
Run Code Online (Sandbox Code Playgroud)

我应该如何理解建筑,比如

from "Some text for this field"
Run Code Online (Sandbox Code Playgroud)

它是赋值变量的值,称为"from"吗?

ruby syntax

4
推荐指数
1
解决办法
517
查看次数

控制器动作被调用两次

我注意到,我的控制器的"索引"动作被调用了两次.

该行动具有以下结构:

def index

  if params[:tags].nil?
     # [fork #1] just return the whole collection of model
     @items = Item.all
  else
     # [fork #2] filter items by tags
     @items = Item.select_by_tags params[:tags]
  end

  # Another operations with @items
  # The result will be incorrect, because, when tags in params are specified,
  # controller action will be first executed for fork #2, and then for fork #1.
  # In view, i get @items from fork #2 and result of THIS piece of …
Run Code Online (Sandbox Code Playgroud)

action controller ruby-on-rails halting-problem

4
推荐指数
1
解决办法
2803
查看次数

不使用self而从模型设置属性不起作用

设备模型具有以下属性:name,version和full_name

全名是name + version:

class Device < ActiveRecord::Base
  def prepare
    full_name = (!show_version || version.nil?)? name : name + " " + version.to_s
  end
end
Run Code Online (Sandbox Code Playgroud)

当我做以下时:

d = Device.new :name => "iPhone", :version => "4"
d.prepare
d.full_name # get nil
Run Code Online (Sandbox Code Playgroud)

我的"full_name"属性为nil

当我使用"自我"时,它有效:

class Device < ActiveRecord::Base
  def prepare
    self.full_name = (!show_version || version.nil?)? name : name + " " + version.to_s
  end
end
Run Code Online (Sandbox Code Playgroud)

做"准备"我得到"iPhone 4"的"full_name"属性.

这里的一些人告诉我,避免在类方法中使用"自我"是一种好方法.但这带来了麻烦.

问题是 - 为什么不使用"自我"就行不通?

ruby ruby-on-rails naming-conventions self

4
推荐指数
2
解决办法
5570
查看次数

W3C格式的时间

如何以W3C格式渲染时间,包括小时,分钟,秒和时区偏移.

例:

1997-07-16T19:20:30+01:00
Run Code Online (Sandbox Code Playgroud)

更新1

我在config/locales/my_locale.yml中有以下声明:

time:
  formats:
    w3c: %Y-%m-%dT%H:%M
Run Code Online (Sandbox Code Playgroud)

唯一缺失的部分是偏移,例如"+01:00".什么是插值符号?

我找到了这个引用,它包含时区名称,用%Z插值.

但是,哪里有抵消

timezone w3c ruby-on-rails date

4
推荐指数
2
解决办法
1087
查看次数

Ruby on Rails中的DES3解密

我的RoR服务器接收一个字符串,该字符串使用带有base64编码的des3在C++应用程序中加密

密码对象创建如下:

cipher = OpenSSL::Cipher::Cipher::new("des3")
cipher.key = key_str
cipher.iv =  iv_str
Run Code Online (Sandbox Code Playgroud)

key_str和iv_str:是加密算法的密钥和初始化向量的字符串表示.它们与RoR和C++应用程序相同.

RoR方面的代码如下:

result = ""
result << cipher.update( Base64.decode64(message) )
result << cipher.final
Run Code Online (Sandbox Code Playgroud)

执行最后一行代码后,我得到一个例外

OpenSSL::CipherError (bad decrypt)
Run Code Online (Sandbox Code Playgroud)

这有什么不对?有任何想法吗 ?

ruby encryption encoding openssl ruby-on-rails

3
推荐指数
1
解决办法
6593
查看次数

查找具有所有关联记录的记录

说,

我们有一个"人"和"喜欢"的模特.

"喜欢"是这个人喜欢的:"音乐","视频","运动","互联网","旅行"等.

"人"HABTM"收藏"和"最喜欢的"HABTM"人物"

我需要找一个人,其中列出了所有"收藏夹.例如,找一个喜欢"音乐","旅行"和"运动"的人.

如何使用ActiveRecord.find方法完成它?

activerecord ruby-on-rails find has-and-belongs-to-many

3
推荐指数
1
解决办法
964
查看次数

灯具的 ID 是如何生成的?

我正在使用固定装置来保存我拥有的所有测试数据。

我的数据库中的每一行在几个rake db:fixtures:loads 中都有相同的 ID 。

这很好,因为我可以在项目中创建文件夹,比如“people/12345”来保存模型的附加数据(文件)。

我很想知道,这些生成的 ID 是如何始终保持不变的fixtures:load

我想 Rails 将夹具标签传递给哈希函数以获得 ID,而不是将其存储在某处。

ruby-on-rails fixtures

3
推荐指数
1
解决办法
1402
查看次数

db迁移回滚的有用性

很多人都在谈论db迁移,特别是关于它的回滚可能性.

我怀疑它是否有用,因为db和model的模式与应用程序逻辑(MVC)紧密相关.

假设我已经完成了一些迁移的回滚.什么?应用程序将无法运行,因为它的逻辑完全依赖于db.

db迁移的回滚功能有哪些用例?


更新1

主要问题

当我需要更改代码时,为什么回滚会作为一项功能呈现?

创建迁移,例如"add_another_field_to_table".相反,每个迁移文件都完整地描述了DB中的每个表.当我需要更改数据库中的内容时,我只需更改迁移文件,但不要回滚.

真的,如果我回滚迁移,不会像版本控制那样让我回到过去.我有很多工作,当计划更改并且回滚没有给我任何东西.

ruby-on-rails database-migration

3
推荐指数
1
解决办法
2026
查看次数

跨浏览器剪切蒙版

我的网站有导航,显示为带圆角的rectengular按钮列表.

每个按钮都应该有自己的自定义背景,这是一张照片.照片比按钮大,应该响应鼠标在此按钮上的移动而移动.我们有一种效果,就像我们透过窗户看一样.

导航具有以下HTML结构:"ul> li> a> img".

我认为,每个"ul> li"都应该是一个带圆角的矩形,并充当图像的剪贴蒙版.

设置"溢出:隐藏;" 不起作用,因为剪裁区域是没有圆角的简单矩形.

CSS属性(如下所示)可以在Webkit浏览器下运行,但不能在Firefox下运行.

mask-image: url(/images/mask.png);
mask-position: 0 0;
mask-repeat: no-repeat no-repeat;
mask-size: 125pt 77pt;
Run Code Online (Sandbox Code Playgroud)

什么是跨浏览器的方式呢?

css mask cross-browser css3 image-clipping

3
推荐指数
1
解决办法
8349
查看次数

Ruby中的棘手运算符

我知道Ruby有很多有用的运算符,比如 ||=

它有什么其他棘手的操作员?

我没有找到任何参考资料.

ruby

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