小编Joe*_*ith的帖子

动态Rails基于数据库模型的路由

所以我正在构建一个需要基于两种不同类型的路由的Rails站点

我有一个语言模型和一个分类模型

因此,我需要能够使用语言路线/红宝石查看顶级红宝石资源,还可以访问/书籍查看所有语言的热门书籍

我试过这样的路线

get '/:language', to: "top_voted#language"
get '/:category', to: "top_voted#category"
Run Code Online (Sandbox Code Playgroud)

问题是逻辑无法弄清楚两者之间的差异,并在后端引起了一些冲突

我也尝试过这个

Language.all.each do |language|
  get "#{language.name}", to: "top_voted#language", :language => language.name
end

Category.all.each do |category|
  get "#{category.name}", to: "top_voted#category", :category => category.name
end
Run Code Online (Sandbox Code Playgroud)

但问题是我们正在部署它的Heroku不允许在路由中进行数据库调用.有更简单的方法吗?我们需要能够以某种方式动态生成这些路由.

ruby routes ruby-on-rails heroku

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

Rails ActiveRecord按连接表关联的数量排序

我有一个Resource可以使用"Acts As Votable"宝石(Github页面)投票的模型.投票系统运作完美,但我试图按votes每个Resource有多少页面显示页面.

目前我的控制器根据标签提取资源,而不是订购:

@resources = Resource.where(language_id: "ruby")
Run Code Online (Sandbox Code Playgroud)

如果我获取一个单独的资源并调用"@ resource.votes.size",它将返回它有多少票.但是,投票是另一个表,所以我认为需要进行某种联接,但我不知道如何做.我需要的是一个很好的有序ActiveRecord集合,我可以这样显示?

书名 - 19票

书名 - 15票

书名 - 9票

书名 - 8票

ruby mysql sql activerecord ruby-on-rails

5
推荐指数
2
解决办法
4910
查看次数

Python"in"不同字长的字符串比较

我正在通过一个包含可能重复条目的名称数据库,并尝试识别我们有哪两个,不幸的是格式有点不太理想,有些条目的名字,中间名,姓氏或处女名被捣碎成一个字符串,有些只有第一个和最后一个.

我需要一种方法来看看'John Marvulli'是否匹配'John Michael Marvulli',并能够对这些比赛进行操作.但是如果你尝试:

>>> 'John Marvulli' in 'John Michael Marvulli'
False
Run Code Online (Sandbox Code Playgroud)

它返回False.有没有一种简单的方法可以用这种方式比较两个字符串,看看是否有一个名字包含在另一个名字中?

python comparison string-comparison comparison-operators

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

Rails搜索查询关联模型

railscast#37中,它们显示了我想要实现的简单搜索.我有以下关联:

class Owner < ActiveRecord::Base
    has_many :dogs
end

class Dog < ActiveRecord::Base
    belongs_to :owner
end
Run Code Online (Sandbox Code Playgroud)

Dog模型具有属性"name",所有者也是如此.我需要能够过滤狗的列表,这样如果你输入"Fido"(狗)或"Bob"(所有者)Fido将出现在列表中.以下是当前搜索的设置方式:

model dog.rb:

def self.search(search)
    if search
      find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
    else
      find(:all)
    end
end
Run Code Online (Sandbox Code Playgroud)

这将仅返回与狗名称匹配的搜索词(忽略所有者名称)

我试着把它改成这样的东西:

  def self.search(search)
    if search
      find(:all, :conditions => ['name LIKE ? or owner.name LIKE ?', "%#{search}%", "%#{search}%"])
    else
      find(:all)
    end
  end
Run Code Online (Sandbox Code Playgroud)

但是说没有所有者专栏.如何更改搜索条件以便能够搜索狗名称和所有者名称?

ruby activerecord ruby-on-rails

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