我对Rails还很陌生,所以我可能会错过一些非常重要的专业,这很容易修复,或者可能是我尚未研究过的作品。
我正在以常规形式创建游览。表单有很多字段,但有问题的地方和我遇到问题的地方是我的collection_select。我想要做的是在城市页面中显示与该城市相关的旅行。
这是我保存游览后出现的错误。
City(#70179438153960) expected, got String(#70179401165880)
模型/ city.rb
class City < ActiveRecord::Base
has_many :cities
end
模型/ tour.rb
class Tour < ActiveRecord::Base
belongs_to :user
belongs_to :city
end
我有城市和旅游的独立控制器。非常基本的脚手架虽然我添加了:city to the params.require(:tour).permit(。
视图/旅游/ _form.html.erb
<%= simple_form_for(@tour) do |f| %>
<div class="inputs">
<%= f.input :company, label: "Company", input_html: { class: 'form-control' } %>
...
<%= collection_select :tour, :city, City.all, :id, :city, {:include_blank => true } %>
</div>
...
<% end %>
表单显示所有城市完美无缺,但更新城市之旅会让我出现错误。
作为后来的额外问题,我希望显示与城市相关的所有旅行。例如,访问city / 1将显示该城市的游览。
谢谢!
答案 0 :(得分:0)
你可以试试这个:
<%= f.select :tour, City.all.map{|c| [c.city, c.id] }, {include_blank: true} %>
答案 1 :(得分:0)
<%= collection_select :tour, :city, City.all, :id, :city, {:include_blank => true } %>
是:这里的城市是一个字符串?城市也很多:城市关系似乎很奇怪。
另外,如果我理解这里的意图(看起来像是巡回演唱会?)那么使用连接表(:id,:user_id,:city_id)并建立has_many_through关系可能更适合多对多关系。 / p>