rails编辑表单显示错误的属性

时间:2014-10-12 14:07:07

标签: ruby-on-rails

实际上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?

1 个答案:

答案 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