我是关于rails的新手,我正在尝试制作自己的简单投票应用程序。我有两个模型:
class Product < ActiveRecord::Base
attr_accessible :description, :title, :photo
has_many :votes
has_attached_file :photo, :styles => { :medium => "300x300" }
before_save { |product| product.title = title.titlecase }
validates :title, presence: true, uniqueness: { case_sensitive: false }
validates :photo, :attachment_presence => true
end
class Vote < ActiveRecord::Base
belongs_to :product
attr_accessible :user_id
end
这是产品控制器
class ProductsController < ApplicationController
http_basic_authenticate_with :name => "dhh", :password => "secret", :except => [:index]
def index
@products = Product.all
end
def indexprv
@products = Product.all
end
def show
@product = Product.find(params[:id])
end
def edit
@product = Product.find(params[:id])
end
def new
@product = Product.new
end
def create
@product = Product.new(params[:product])
if @product.save
redirect_to @product
else
render 'new'
end
end
def update
@product = Product.find(params[:id])
if @product.update_attributes(params[:product])
flash[:success] = "Producto Actualizado"
redirect_to root_path
else
render 'edit'
end
end
def destroy
Product.find(params[:id]).destroy
flash[:success] = "Producto Eliminado."
redirect_to root_path
end
end
我有很多问题。
如何在产品索引页面上显示每种产品的总票数?
如何在索引产品页面上创建按钮以添加产品投票?
我不知道如何做到这一点,我找不到任何教程或类似的例子。
感谢您的帮助。
答案 0 :(得分:1)
您的索引视图可能已遍历您拥有的每个产品(通过部分或循环)。在你的循环/部分做类似的事情:(假设变量产品有产品的实例)
product.votes.count
获得投票数。要获得添加投票的按钮,请执行以下操作:
link_to "Add Vote", new_product_vote_path(product), action: :new
涵盖rails的许多方面的好教程是:http://ruby.railstutorial.org/chapters/beginning#top
编辑:
控制器中的索引方法为您提供了每个产品的数组。所以,如果你在索引视图中做了类似的事情(如果你使用的是erb):
<ul>
<% @products.each do |product| %>
<li>
<%= product.title %>: <br />
Votes: <%= product.votes.count %> <br />
<%= link_to "Add Vote", new_product_vote_path(product), action: :new %>
</li>
<% end %>
</ul>
它应该做你想做的事情