Tag: ruby on rails 3.1

将实例变量传递给样式表资产

如何将实例变量从控制器传递到资产样式表? 我可以这样做吗? preview_controller.rb def show @design = Design.first end 和我的资产文件是 preview.css.scss.erb body{ background-image: url(”); }

我如何加入派生表?

sql语句是这样的: select posts.id, posts.title from posts inner join (select distinct post_id,created_at from comments order by created_at DESC limit 5 ) as foo on posts.id=foo.post_id order by foo.created_at DESC; 我想获得一个相当于上面的rails 3 sql语句。 我尝试的内容如下: 以下sql查询给出了类似的结果。 select distinct post_id, created_at from comments order by created_at DESC limit 5 @temp = Comment.select(‘distinct(comments.post_id),created_at’).order(‘created_at DESC’).limit(5) 我试图将这个派生的@temp表加入posts表来获取posts.title 我尝试了这个但失败了。 @temp2 = @temp.joins(‘posts’) 那么,我如何使用派生的@temp表加入posts表? […]

Rails 3.1资产管道 – 从公共/资产中丢失文件 – 为什么这不是默认值?

在今天下午将我升级的Rails 2.3.x – > 3.1(rc4)应用程序部署到我们的测试环境后,我们所有的样式表和JavaScript文件都返回了404错误。 我们已经将rake资产:预编译任务添加到我们的部署后脚本中,并且需要一段时间来确定资产文件夹为什么没有我们预期的预编译文件。 最后,文件没有被编译,因为默认情况下只处理application.css和application.js(+非JS / CSS文件)。 我们需要更改以下配置值,如下所示: config.assets.precompile += %w( *.js *.css ) 问题:为什么这不是默认值? 我原本预计,任何不必作为清单文件处理的东西都会被复制到公共/资产中。 我在资产管道上阅读的大部分内容基本上是“将您的资产放在应用程序/资产中,配置清单文件,它应该正常工作”。 由于资产:预编译任务没有吐出任何有关它正在做什么的信息,因此需要一段时间才能确定它只是没有查看我们认为会存在的文件。 有什么理由说这对于预编译配置来说不是一个好的价值? 谢谢!

升级到Rails 3.1.1后:“未定义的方法`javascript_expansions’”错误

我已将rails从3.0.10升级到3.1.1,现在我得到以下错误: undefined method ‘javascript_expansions’ for ActionView::Helpers::AssetTagHelper:Module 但不是每页都有,只涉及一些页面。 我已经google了,但我没找到任何东西! 我顺便跑了ruby1.9.2 … 我的资产管道似乎也没有用。 它没有加载application.css和application.js文件,甚至它在assets子文件夹中。 我每次尝试获取任何文件时都会收到路由错误。

REXML :: Document.new我们可以在这行上给出编码参数吗?

doc = REXML :: Document.new file只要我的xml文件包含UTF-8以外的一些特殊字符,我的代码就会失败。 REXML::ParseException (#<REXML::ParseException: #

在加载*路由后运行*的Rails初始化程序?

我想在我的Rails应用程序启动时设置一个类属性。 它需要检查一些路由,因此需要在我的自定义代码运行之前加载路由。 我无法找到一个可靠的地方。 这在“测试”环境中完美地工作: config.after_initialize do Rails.logger.info “#{Rails.application.routes.routes.map(&:path)}” end 但它在“开发”环境中不起作用(路线是空的) 现在,我似乎通过在config.to_prepare运行相同的代码来使开发模式中的东西工作,我理解在每个请求之前发生。 不幸的是,单独使用to_prepare似乎不能在测试模式下工作,因此重复。 我很好奇为什么在测试模式中after_initialize之前加载路由,而不是在开发模式下。 真的,这个最好的钩子是什么? 是否有一个适用于所有环境的钩子? *编辑* 穆的建议重新加载路线很棒。 它使我能够在所有环境中对after_initialize内的路径进行一致的访问。 但是对于我的用例,我认为我仍然需要运行to_prepare中的代码,因为我在模型上设置了一个类属性,并且在每个请求之前重新加载模型。 所以这就是我最终做的事情。 [:after_initialize, :to_prepare].each do |hook| config.send(hook) do User.invalid_usernames += Rails.application.routes.routes.map(&:path).join(“\n”).scan(/\s\/(\w+)/).flatten.compact.uniq end end 这对我来说似乎有些混乱。 我想我宁愿这样做: config.after_initialize do User.exclude_routes_from_usernames! end config.to_prepare do User.exclude_routes_from_usernames! end 但我不确定User是否是正确检查Rails.application.routes地方。 我想我可以用lib /中的代码做同样的事情,但我不确定这是否正确。 另一种选择是在to_prepare上应用mu的建议。 这样可行,但在我的开发环境中,每次请求都重新加载路由似乎有明显的延迟,所以我不确定这是否是一个好的呼叫,尽管它至少是干的。 config.to_prepare do Rails.application.reload_routes! User.invalid_usernames += Rails.application.routes.routes.map(&:path).join(“\n”).scan(/\s\/(\w+)/).flatten.compact.uniq end

Rails,没有密码的Authlogic(注册确定.user_sessionvalidation失败)

我试图跳过Authlogic中用户的密码.. 多亏了SO,我找到了创建用户的解决方案 User acts_as_authentic do |c| c.validate_password_field = false c.validate_email_field = false end User_session仍然存在问题 – 任何时候我尝试登录我都会得到“密码不能为空” 如何绕过用户会话的validation?

未定义的方法`email’代表nil:Exibe中的NilClass父表的邮件

我有一个问题,我做这个atribbuition我评论模型: class Comment < ActiveRecord::Base attr_accessible :comment belongs_to :post belongs_to :user 这在用户模型中 class User < ActiveRecord::Base attr_accessible :email, :password, :password_confirmation has_many :posts has_many :comments 但这不起作用: 出现错误: undefined method `email’ for nil:NilClass 请问有什么问题,在评论的创建中我做了atribbuition,看看: @comment = @post.comments.create(params[:comment],:user_id => current_user.id) 我如何解决这个错误,请 – 更新下一个响应,错误持续: 我试试这个: @comment = Comment.new(params[:comment]) @comment.user = current_user @comment.post = @post @comment.save 这个 @comment = @post.comments.create(params[:comment].merge(:user_id […]

nested_form,has_many:through,更新连接模型的属性

我正在使用ryan bates的插件nested_form,我一直在尝试为has_many编写表单:通过关系。 我有3个型号: Profile has_many :memberships has_many :organizations, :through => :memberships accepts_attributes_for :organizations attr_accessible :organization_attribtues Membership has_many :profiles has_many :organizations Organization has_many :memberships has_many :profiles, :though => :memberships 下面的表单用于配置文件,但组织嵌套在其中。 我可以通过f.fields_for:组织创建有关组织的信息,但后来我不清楚如何更新特定于组织成员身份的信息。 具体来说,成员资格表上有一个title属性(我在下面评论它,因为它会为组织抛出一个错误的未定义方法`title’)。 任何帮助都会非常感激! 谢谢。 = f.fields_for :organisations do |org| = org.input :name, :label => “Name of the Organization” = org.input :title, :label => “Your role” = […]

急于加载“二度”关联对象的麻烦

我正在运行Ruby on Rails 3.1。 我想通过应用一些条件来加载“二度”关联对象,但我遇到了麻烦。 似乎我已经使用以下方法解决了部分问题 : article_categories = article .categories .includes(:comments => [:category_relationships]) .where(:category_relationships => {:user_id => @current_user.id}) 所涉及的课程如下: class Category :comment_relationships … end class Comment :category_relationships … end 上面的代码(似乎做得对): 通过关注has_many :through :category_relationships关联(即通过关注.where(:category_relationships => {:user_id => @current_user.id})条件)加载所有categories ; eager加载所有article.comments.where(:user_id => @current_user.id) 。 但是,我想补充一点: 按照 category_relationships存在的:position属性对检索到的category_relationships进行排序,以便生成的article_categories 按位置排序 ; 急切加载 category_relationship对象,其中user_id == @current_user.id因为上面的代码没有这样做。 如何利用急切的加载来实现这一目标?