实际上Rails正在做它应该做的事情,但我想改变它。
我的旅行表单中有一个城市名称字段,在其列出的表单代码中:city_id(该名称用于在保存旅行之前查找城市。)
因为当我将@trip传递给表单以编辑旅行时,会调用此字段:city_id,Rails会显示城市ID,而不是城市名称。我怎么能改变这个?
城市:410
我想:
城市:美国旧金山
旅行表格视图:
<%= form_for @trip do |f| %>
<%= f.label :city_id, "City" %>
<%= f.text_field :city_id, options = { id: "navbar-search-input", class: 'form-control', placeholder: 'San Francisco, United States' } %>
<br>
<%= f.label :start_date %>
<%= f.date_select :start_date %><br>
<%= f.label :end_date %>
<%= f.date_select :end_date %><br>
<%= f.submit "Add trip" %>
<% end %>
当我白色列出参数
时,我将字符串名称转换为城市ID:city_id => City.find_by_display(params[:trip][:city_id]).id
在我的城市模型City.display =&#34;城市名称,国家名称&#34;
那么如何让编辑表单显示City.display而不是City.id?
答案 0 :(得分:0)
我认为更好的方法是使用select来最小化代码但如果您不想更改UI,那么在编辑操作中 只需要在新行动中反过来做你正在做的事情。在您的编辑操作中,只需指定city_id的值,这样当表单加载时,它会显示该字符串
def edit
@trip = Trip.find(params[:id])
@trip.city_id = City.find(@trip.city_id).name #your logic to change city_id to its name
end