ruby-on-rails - 寻找一种更简单的方法来在 Rails 3 中呈现结果

标签 ruby-on-rails ruby

简介:

我正在做一个汽车经销商项目.. 销售从 A 到 Z 的每个品牌的汽车。我想制作一个小盒子,其中包含每个汽车名称的链接。单击 Mercedes for ex,将渲染所有梅赛德斯汽车,依此类推。这是我现在拥有的:

汽车 Controller

def mercedes
    ...
    @cars = Car.where('carname_id = 1').order('created_at desc').paginate :page => params[:page], :per_page => 5
  end

每辆车都有这样的代码,30 件..但还会有更多 在我看来

<%= link_to 'Mercedes', :controller => :cars, :action => :mercedes %>

还有大约 30 行代码,每辆车一行。除此之外,我必须有 30 个 View 文件。好吧,有了 View ,我想我可以对所有汽车使用一个部分

问题:

如何用更少的代码来完成。也许它会有所帮助..我有一个名为 carnames 的表,我把所有的车都放在那里,所以我冷做类似的事情

<% @carnames.each do |car| %>
<%= link_to '<%= carname.name %>', :controller => :cars, :action => :<%= carname.name %> %>
<% end %>

我认为这将为我生成每辆汽车的链接而无需编写它们,问题出在 Controller 中。我不确定是否可以编写这么多代码。我希望我说清楚。感谢您的宝贵时间。

编辑

我的车是这样存放的:

我将汽车名称保存在一个名为 carnames 的表中,在 carmodels 中保留模型。每个表都有一个 ID 字段和名称字段。所以 Meredes E class for ex 将具有来自 carname 表的具有特定 id_carname 的汽车名称和来自 carmodel 表的 E 类具有特定的 id_carmodel.. 我拥有所有模型的所有 belongs_to 和 has_many。

最佳答案

你遇到麻烦是因为你做错了。有一个名为“梅赛德斯”的 Controller Action 敲响了警钟。理想情况下,你有一个品牌模型/ Controller ,它有很多车。例如:

class BrandsController < ApplicationController
  def show
    @brand = Brand.find params[:id]
  end
end


class CarsController < ApplicationController
  def index
    @brand = Brand.find params[:brand_id]
    @cars = @brand.cars.paginate(:page => params[:page], :per_page => 5)
  end
end


class Brand < ActiveRecord::Base
  has_many :cars

  # With this, your car URL could be /brands/1-mercedes/cars,
  #  instead of just /brands/1/cars.
  def to_param
    "#{self.id}-#{self.name}"
  end 
end


class Car < ActiveRecord::Base
  belongs_to :brand
end


resources :brands do
  resources :cars
end


<h1><%= @brand.name %></h1>
<% @cars.each do |car| %>
  <%= link_to car.name, [@brand, car] %>
<% end %>

作为引用,您可以使用 carname.name.to_sym,如下所示:

<% @cars.each do |car| %>
  <%= link_to car.name, :controller => :cars, :action => car.name.to_sym %>
<% end %>

虽然传递 car 记录应该足够了:

<% @cars.each do |car| %>
  <%= link_to car.name, car %>
<% end %>

但是,这并不能改变您正在编写糟糕的代码。

关于ruby-on-rails - 寻找一种更简单的方法来在 Rails 3 中呈现结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774274/

相关文章:

ruby - 清除 ActiveRecord 缓存

javascript - jQuery 无法解析使用 Ruby-JSON 构建的 JSON

javascript - 尝试在我的 Rails 应用程序中截屏页面时 PhantomJS.rb 卡住

ruby-on-rails - 使用多个 Bundler 版本

ruby-on-rails - 如何将按钮添加到 Active Admin 索引页面

ruby-on-rails - rspec 在失败测试中的未决结果

ruby-on-rails - Rails4 : My hstore attribute is being converted to String

ruby - Ruby 字符串的 gsub 和 sub 方法有什么区别

ruby-on-rails - Rails 应用程序部署,rake DB :migrate doesn't create table and want table to already be here to create them

javascript - 如何更新 Rails 中 Ajax 删除的记录?