Объединение выпадающего из двух таблиц в Rails - PullRequest
0 голосов
/ 12 июля 2019

Мне нравится знать, как объединить два атрибута таблицы и суммировать их в одном раскрывающемся списке.

Я попытался создать метод в помощнике создания формы, на который ссылался атрибут таблицы.


_form.html.erb

<div class="field">
    <%= form.label :Destinations %>
    <%= form.collection_select(:destination_id, Destination.all, :id, destname_with_klm(@createform.destination), {}, { :multiple => false } ) %>
  </div>

createforms_helper.rb

module CreateformsHelper

  def destname_with_klm(f)
    "#{f.Destination_name}.#{f.Destination_kilometre}"
end
end
NoMethodError in Createforms#new
Showing **/app/views/createforms/_form.html.erb where line #34 raised:

undefined method `Destination_name' for nil:NilClass

1 Ответ

0 голосов
/ 12 июля 2019

ошибка, которую вы получаете undefined method "Destination_name" for nil:NilClass, заключается в том, что параметр (f), который вы передаете, равен nil

Однако, я думаю, вы можете обновить модель и сделать код чище. (Я посмотрел на предложенную отредактированную редакцию и собрал эту информацию)

#app/models/destination.rb

class Destination < ActiveRecord::Base
   #other code 
   def destination_name_with_kms
     # I believe the attribute names should be lowercase 
     "#{Destination_name}.#{Destination_kilometre}"
   end
end

#in your view
<%= form.collection_select(:destination_id, Destination.all, :id, destination_name_with_kms, {}, { :multiple => false } ) %>

Если вы хотите пойти еще дальше, я бы порекомендовал использовать драгоценный камень, например Draper и переместите все форматирование пользовательского интерфейса в декоратор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...