Рельсы: Дополнительные области поиска

В моем приложении Рельсов я использую collection_select , чтобы предоставить список действительного выбора для пользователя. Я сохранил только id от посмотревшего стола. Я тогда звоню посмотревшему классу на <�сильном> шоу представлению, чтобы восстановить фактическое значение для id.

в отредактируйте:

= f.collection_select :language_id, Language.find(:all, :conditions => ["supported = 't'"]), :id, :language, include_blank: false, :prompt => "Language"

на шоу:

%p
  %b Language:
  = Language.find(@article.language_id).language_code

Это все хорошо работает, если никакой выбор не сделан. Если @article.language_id область пустая, представление не может загрузить, поскольку находка терпит неудачу. Какие-либо предложения о том, как проигнорировать нулевые значения и покинуть поле бланк?

0
nl ja de

2 ответы

использование find_by_id был бы выбором, поскольку это не поднимает ошибку, если id не мог бы быть найден.

это издает приказ к базе данных все же.

таким образом, я просто проверил бы languange_id и предоставил бы дефолт

= @article.language_id.nil? ? default : Language.find_by_id(@article.language_id)

это могло также быть перемещено в модель или помощника, так, чтобы она не загромождала ваш код представления.

1
добавлено
Прекрасный. Точно, что я искал.Thank you.
добавлено автор ardochhigh, источник

Это - типичная проблема. Просто используйте попытку , чтобы оставить нулевые ценности:

 if @article.try(:language_id) != nil
      @code = Language.find(@article.language_id).language_code
    else
      //default nil
      @code = nil
  end
0
добавлено
правильный я стараюсь избегать сообщения об ошибке.
добавлено автор ardochhigh, источник
хорошо, я обновил код. Это должно работать на вас применяющий условия.
добавлено автор My God, источник
найдите поднимает ошибку, если ID не мог бы быть найден, таким образом, эта работа привычки
добавлено автор phoet, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff