我通过使用url params传递语言环境,将I18N添加到我的rails应用程序中.我的网址看起来像http://example.com/en/users和http://example.com/ar/users(分别针对英语和阿拉伯语语言环境).
在我的路由文件中,我使用:path_prefix选项定义了我的路由:
map.resources :users, :path_prefix => '/:locale'
Run Code Online (Sandbox Code Playgroud)
并且使用ApplicationController中定义的before_filter设置locale
def set_locale
I18n.locale = params[:locale]
end
Run Code Online (Sandbox Code Playgroud)
我还定义了ApplicationController#default_url_options,将语言环境添加到应用程序生成的所有URL:
def default_url_options(options={})
{:locale => I18n.locale}
end
Run Code Online (Sandbox Code Playgroud)
我想要的是在布局标题(在所有页面中显示)中添加一个链接,该链接将链接到同一页面,但链接到另一个区域设置.
例如,如果我正在浏览阿拉伯语语言环境,我希望标题中有一个"英语"链接,它会将我重定向回当前页面,并将语言环境设置为英语.有没有办法在rails中执行此操作?
向postgres发出"insert"语句时,如何获取最后在DB中插入的行的ID?
我试过"pg","pg-native","pg-connection"以及一堆其他软件包.对于每个包,我尝试了sync和async方法.我读了假装成包文档的东西.我检查了包的源代码.对于我的生活,我无法弄清楚这一点,我无法相信我是唯一一个面对这个问题的人.
任何见解将不胜感激.
我正在使用ImageMagick调整图像大小.如果我传递-resize WxH选项,它的行为与预期一致.但如果我通过-resize WxH!(为了在调整大小期间忽略宽高比),某些图像(尤其是PNG)的大小实际上在增加.200k图像变为450k,170k图像变为360k,依此类推.
任何想法为什么这是hapenning以及如何解决它?
谢谢
我正在尝试在用户之间建立关系模型.用户可以发起关系,也可以从其他用户接收关系.因此,db中的关系表具有外键"initiator_id"和"recipient_id".
现在,我可以使用以下关联来计算用户发起或接收的关系:
has_many :initiated_relations, :foreign_key => :initiator_id, :class_name => 'Relation', :dependent => :destroy
has_many :received_relations, :foreign_key => :recipient_id, :class_name => 'Relation', :dependent => :destroy
Run Code Online (Sandbox Code Playgroud)
我想要做的是建立一个关联,它将获取属于用户(发起或接收)的所有关系.尝试以下操作无效,并抱怨缺少"user_id"字段:
has_many :relations, :conditions => 'recipient_id = #{id} or initiator_id = #{id}'
Run Code Online (Sandbox Code Playgroud)
如何创建仅基于条件字段的关联,而不查找默认的foreign_key?或者可能有一种完全不同的方法来解决这个问题?