我正在使用表单允许用户为特定用户所在的行程创建新的评论。我的评论表目前有以下列(评级,trip_id,描述)。我遇到的问题是显示用户所在旅行的城市名称文本。
Rails Doc for collection_set接受以下args:collection_select(method,collection,value_method,text_method,options = {},html_options = {})。在文本方法方面,我希望能够显示旅行的实际城市名称,但是,城市名称由旅行表中的city_id引用。我不确定如何访问通过其关联存在的列。
旅行表(user_id,city_id) 城市表(名称,描述)
<%= form_for @review do |f| %>
<%= f.label :rating %>
<%= f.number_field :rating %> <br>
<%= f.label :trip_id %>
<%= f.collection_select :trip_id, @user.trips, :id, :city_id %>
<%= f.label :description %>
<%= f.text_area :description %> <br>
<%= f.submit %>
<% end %>
我第一次询问有关铁轨的表格,所以请告诉我如何更新问题以便更好地了解。
答案 0 :(得分:1)
而不是city_id
中的collection_select
,而是您想要使用城市名称。这是一种方法:
首先,将city_name
添加到Trip
class Trip < ActiveRecord::Base
belongs_to :city
def city_name
city.name
end
end
然后修改您的选择:
<%= f.collection_select :trip_id, @user.trips.includes(:city), :id, :city_name %>
includes(:city)
位将帮助您避免N + 1查询问题,以便每个Trip
不会为City
拨打数据库。