小编Eri*_* Hu的帖子

基于2个或更多级别的关联对查询进行排序

我有以下型号

class Post < ActiveRecord::Base
  belongs_to :user, :counter_cache => true
  belongs_to :subtopic      
end


class Subtopic < ActiveRecord::Base
  belongs_to :category
  has_many :posts, :dependent => :destroy
end

class Category < ActiveRecord::Base
  has_many :posts, :through => :subtopics
  has_many :subtopics, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)

在帖子/索引页面中,我想为列标题添加可点击排序.这很好,除了我显示两个级别的一些信息:

  • 发布属性
    • 副主题名称
      • 分类名称

我希望表格的"类别"列可以点击,这样我就可以显示按类别排序的所有帖子.不幸的是,当我构建查询的"order by"部分时,我似乎无法为类别名称工作.我可以深入一级

@posts = Post.includes(:user, :subtopic => :category).paginate(:page =>1, :order => 'subtopics.name ASC')
Run Code Online (Sandbox Code Playgroud)

这将返回我想要的结果.当我尝试更深入一级时

@posts = Post.includes(:user, :subtopic => :category).paginate(:page =>1, :order => 'subtopic.categories.name ASC')
Run Code Online (Sandbox Code Playgroud)

我得到PGError: ERROR: schema "subtopic" does not exist.多个子主题给出了相同的错误.我觉得我错过了一些明显的东西.有人能说出来吗?

旁注:味道不好警报.我知道.如果你有关于如何使这个代码更清洁的建议,那将是非常受欢迎的.我知道得墨忒耳定律,但我不知道如何在不破坏它的情况下得到我想要的最终结果. …

activerecord ruby-on-rails associations

6
推荐指数
1
解决办法
2847
查看次数

Vim正则表达式不匹配字符类中的空格

我正在使用vim进行搜索并替换为此命令:

%s/lambda\s*{\([\n\s\S]\)*//gc

我试图在a之后匹配所有单词,endline和whitespace字符{.例如,此行的整体应匹配:

    lambda {
  FactoryGirl.create ...
Run Code Online (Sandbox Code Playgroud)

相反,它只匹配换行符,之前没有空格FactoryGirl.我之前尝试过手动替换所有空格,以防万一有替代字符,但没有骰子.任何人都可以解释为什么这不起作用?

regex vim

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

自制:无法运行ag(银色搜索者)

我的自制安装ag失败了:

$ ag
dyld: Library not loaded: /usr/local/lib/libpcre.1.dylib
  Referenced from: /usr/local/bin/ag
  Reason: image not found
Trace/BPT trap: 5
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来解决这个问题?

homebrew

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

Vim:重新格式化和重新评论的自动化方式?

我在代码中有一些文档,我想要很好地格式化:

# book_id - integer
# chapter_id - integer (Optional)
# relative_url - Text: the url of the screencast file on S3, relative to the book's url
# view_count - integer
Run Code Online (Sandbox Code Playgroud)

我安装了Tabular.vim,这让我走得很远:

# book_id      - integer
# chapter_id   - integer (Optional)
# relative_url - Text: the url of the screencast file on S3, relative to the book's url
# view_count   - integer
Run Code Online (Sandbox Code Playgroud)

我想要一些自动生成这样的代码的方法.也就是说,包裹到79个字符,如果从前一个注释继续一行,则缩进.我得到的是这个:

# book_id      - integer
# chapter_id   - integer (Optional)
# relative_url - Text: the url of the …
Run Code Online (Sandbox Code Playgroud)

vim formatting

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

Rails控制台:帮助器和应用程序定义在哪里?

rails console,有两个对象可用:apphelper. 一些 博客 文章涵盖了这些有用的内容.不幸的是,它们在普通Rails应用程序的源代码中不可用.

这些方法在哪里定义,或者如何在Rails应用程序中使用它们?

console ruby-on-rails

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

为什么这个Rails正则表达式匹配这个字符串?

我正在使用以下正则表达式验证我的一个模型

validates :login,
  :format => {:with => /[A-Za-z][A-Za-z0-9_]+/}
Run Code Online (Sandbox Code Playgroud)

我的一个测试失败了,因为这个正则表达式匹配这个字符串,并将其传递为有效

a+df
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

regex ruby-on-rails

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

遇到的模式名称是什么:buffers?

在vim中,输入:buffers和一些其他命令显示结果页面.这个页面感觉像一个残缺的正常模式,因为h,j,k和l可以导航,但其他命令如ctrl-u和ctrl-d则不能.可视模式也不能用于在此模式下选择文本.

这种模式的名称是什么?

vim

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

为什么vim在删除模式下启动?

如问题中所述,我的vim以删除模式开始.如果我打开一个文件并点击j开始导航,那将删除第一行.

我把这个问题分解到了我的这行.vimrc:

nnoremap <silent> <esc> :noh<return><esc>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这甚至会触发删除模式.最重要的是,我相信我添加<silent>了指示vim进行绑定而不执行它,这似乎并非如此.

为什么会发生这种情况的原因是什么?

(注意,这个映射是告诉vim在我点击esc时清除搜索亮点)

vim

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

.paginate(...)调用属于哪里?

现在我在我的控制器中有这个:

def index
  @votes = Vote.paginate(:page => params[:page], :order=>"created_at DESC")
end
Run Code Online (Sandbox Code Playgroud)

但我正在考虑将.paginate移动到views/index.html.erb(或该目录中的部分).Paginate在我看来它似乎属于View,因为它管理投票集合的显示方式.我是否正确理解MVC分离?

ruby-on-rails will-paginate ruby-on-rails-3

0
推荐指数
1
解决办法
232
查看次数