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"吗?
我注意到,我的控制器的"索引"动作被调用了两次.
该行动具有以下结构:
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) 设备模型具有以下属性: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"属性.
这里的一些人告诉我,避免在类方法中使用"自我"是一种好方法.但这带来了麻烦.
问题是 - 为什么不使用"自我"就行不通?
如何以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插值.
但是,哪里有抵消?
我的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)
这有什么不对?有任何想法吗 ?
说,
我们有一个"人"和"喜欢"的模特.
"喜欢"是这个人喜欢的:"音乐","视频","运动","互联网","旅行"等.
"人"HABTM"收藏"和"最喜欢的"HABTM"人物"
我需要找一个人,其中列出了所有"收藏夹.例如,找一个喜欢"音乐","旅行"和"运动"的人.
如何使用ActiveRecord.find方法完成它?
我正在使用固定装置来保存我拥有的所有测试数据。
我的数据库中的每一行在几个rake db:fixtures:loads 中都有相同的 ID 。
这很好,因为我可以在项目中创建文件夹,比如“people/12345”来保存模型的附加数据(文件)。
我很想知道,这些生成的 ID 是如何始终保持不变的fixtures:load?
我想 Rails 将夹具标签传递给哈希函数以获得 ID,而不是将其存储在某处。
很多人都在谈论db迁移,特别是关于它的回滚可能性.
我怀疑它是否有用,因为db和model的模式与应用程序逻辑(MVC)紧密相关.
假设我已经完成了一些迁移的回滚.什么?应用程序将无法运行,因为它的逻辑完全依赖于db.
db迁移的回滚功能有哪些用例?
更新1
主要问题
当我需要更改代码时,为什么回滚会作为一项功能呈现?
我不创建迁移,例如"add_another_field_to_table".相反,每个迁移文件都完整地描述了DB中的每个表.当我需要更改数据库中的内容时,我只需更改迁移文件,但不要回滚.
真的,如果我回滚迁移,它不会像版本控制那样让我回到过去.我有很多工作,当计划更改并且回滚没有给我任何东西.
我的网站有导航,显示为带圆角的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)
什么是跨浏览器的方式呢?