0

Я все еще довольно новичок в Rails, поэтому я мог бы пропустить здесь довольно крупный майор, и это легко исправить или, может быть, часть, которую я еще не изучил.ожидается, получил String

Я создаю тур в обычной форме. У формы есть много полей, но у меня есть вопросы, и у меня возникают проблемы с моей коллекцией. То, что я пытаюсь сделать, - это показать туры, связанные с этим городом на страницах городов.

Вот ошибка, которую я получаю, которая появляется после сохранения тура.

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 

У меня есть отдельные контроллеры для города и путешествий. Довольно основной подмости хотя я добавлю: город в params.require (: тур). .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 %> 

В форме отображаются все города прекрасно но обновление тура с городом дает мне ту ошибку, которую я обнаружил.

В качестве дополнительного вопроса для последующего я хотел бы показать все туры, связанные с городом. Например, посещение города/1 показывает туры для этого города.

Спасибо!

ответ

0

<%= collection_select :tour, :city, City.all, :id, :city, {:include_blank => true } %>

Is: город здесь строка? Также City has_many: отношения городов кажутся странными.

Кроме того, если я понимаю намерение здесь (похоже, концертные туры?), То многие из многих отношений могут быть более целесообразными с помощью таблицы join (: id,: user_id,: city_id) и создания отношения has_many_through.

+0

Да,: город - это строка. Хм, я думаю, что я хотел написать там is_many: туры. Таким образом, тур связан с городом. Тогда в городе будут показаны все туры для этого города. – Michael

+0

Вы можете пометить ответные вопросы как ответ. –

0

Вы можете попробовать это:

<%= f.select :tour, City.all.map{|c| [c.city, c.id] }, {include_blank: true} %> 
+0

Хм Теперь я получаю неопределенный метод 'tour 'для # Michael

+0

Я предполагаю, что: тур следует заменить на: город, но это возвращает меня к той же проблеме, что и раньше, с ожидаемым, полученным Строка. – Michael

+0

Если я изменю его на <% = collection_select: city,: city, City.all,: id,: city, {: include_blank => true}%>, он не сохраняет, что я предполагаю, является проблемой params, но Я не могу понять. – Michael

Смежные вопросы