列出 rails 中属于另一个模型的所有模型
List all models belonging to another model in rails
在 'service' 模型的显示视图中,我希望能够显示与此服务关联的所有 'reviews'。需要知道在 'service' 显示视图以及 'service'/'review' 控制器中放置什么。
服务模式:
class Service < ActiveRecord::Base
has_many :reviews
end
审核模型:
class Review < ActiveRecord::Base
has_one :service
belongs_to :service
end
服务展示视图:
<table>
<thead>
<tr>
<th>Name</th>
<th>Date</th>
<th>Review</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @reviews.each do |review| %>
<tr>
<td><%= review.name %></td>
<td><%= review.date %></td>
<td><%= review.review %></td>
<td><%= link_to 'Show', review %></td>
<td><%= link_to 'Edit', edit_review_path(review) %></td>
<td><%= link_to 'Destroy', review, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
审核架构:
create_table "reviews", force: true do |t|
t.string "name"
t.string "date"
t.text "review"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "service_id"
end
审查控制者:
def index
@reviews = Review.all
respond_with(@reviews)
end
def show
respond_with(@review)
end
def new
@review = Review.new
respond_with(@review)
end
def edit
end
def create
@review = Review.new(review_params)
@review.save
respond_with(@review)
end
服务控制器:
def new
@service = Service.new
end
# GET /services/1/edit
def edit
end
# POST /services
# POST /services.json
def create
@service = Service.new(service_params)
respond_to do |format|
if @service.save
format.html { redirect_to @service, notice: 'Service was successfully created.' }
format.json { render :show, status: :created, location: @service }
else
format.html { render :new }
format.json { render json: @service.errors, status: :unprocessable_entity }
end
end
end
我不太明白你到底想完成什么。如果你想在显示视图中访问某个服务的评论,你可以通过简单地做
@reviews = @service.reviews
如果你的服务控制器中有一个@service 对象。
如果这不是您需要的,请编辑您的问题并提供更清晰的解释。
如果您想在服务显示页面中显示与该服务关联的所有 reviews
,则需要调整您的 service_controller show
这样的动作
def show
@service = Service.find(params[:id])
@reviews = @service.reviews
end
在 'service' 模型的显示视图中,我希望能够显示与此服务关联的所有 'reviews'。需要知道在 'service' 显示视图以及 'service'/'review' 控制器中放置什么。
服务模式:
class Service < ActiveRecord::Base
has_many :reviews
end
审核模型:
class Review < ActiveRecord::Base
has_one :service
belongs_to :service
end
服务展示视图:
<table>
<thead>
<tr>
<th>Name</th>
<th>Date</th>
<th>Review</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @reviews.each do |review| %>
<tr>
<td><%= review.name %></td>
<td><%= review.date %></td>
<td><%= review.review %></td>
<td><%= link_to 'Show', review %></td>
<td><%= link_to 'Edit', edit_review_path(review) %></td>
<td><%= link_to 'Destroy', review, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
审核架构:
create_table "reviews", force: true do |t|
t.string "name"
t.string "date"
t.text "review"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "service_id"
end
审查控制者:
def index
@reviews = Review.all
respond_with(@reviews)
end
def show
respond_with(@review)
end
def new
@review = Review.new
respond_with(@review)
end
def edit
end
def create
@review = Review.new(review_params)
@review.save
respond_with(@review)
end
服务控制器:
def new
@service = Service.new
end
# GET /services/1/edit
def edit
end
# POST /services
# POST /services.json
def create
@service = Service.new(service_params)
respond_to do |format|
if @service.save
format.html { redirect_to @service, notice: 'Service was successfully created.' }
format.json { render :show, status: :created, location: @service }
else
format.html { render :new }
format.json { render json: @service.errors, status: :unprocessable_entity }
end
end
end
我不太明白你到底想完成什么。如果你想在显示视图中访问某个服务的评论,你可以通过简单地做
@reviews = @service.reviews
如果你的服务控制器中有一个@service 对象。
如果这不是您需要的,请编辑您的问题并提供更清晰的解释。
如果您想在服务显示页面中显示与该服务关联的所有 reviews
,则需要调整您的 service_controller show
这样的动作
def show
@service = Service.find(params[:id])
@reviews = @service.reviews
end