Rails Craiglist就像项目列表一样

时间:2012-02-28 16:23:39

标签: ruby-on-rails ruby-on-rails-3

所以我有一个与has_many和belongs_to相关联的州模型和城市模型。我想显示一个页面,其中包含每个州及其相关城市。

我创建了一个名为“Locations”的页面控制器和页面,并在

中手动输入
<%= link_to "Allentown", allentown_path %>

然后将您带到已经过去的页面。

在ifntown页面上,我通过将此代码添加到页面控制器

来过滤列表
def allentown
  @title = "Allentown Listings"
  @tattoo_briefs = TattooBrief.where( :city_id => 1 ).find(:all, :order => "id DESC" )
end

我知道这不是干的。如果我有200个城市,也会非常麻烦。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您需要为路线添加资源:

的routes.rb

resources :city

这实际上为您提供了City模型的所有RESTful操作。然后,在您的控制器中,使用显示操作来等待它..显示您的城市页面

cities_controller.rb

def show
  @city = City.find(params[:id])
  @title = "#{@city.name} Listings"
  @tattoo_briefs = TattooBrief.where( :city_id => params[:id] ).find(:all, :order => "id DESC" )
end

你仍然可以通过从rails api学习更多路由和控制器来修改它。通过增加知识,您可以通过修改路线来使用城市名称而不是ID来实现。