Направляющие: предварительно выберите значение в ActionView-помощнике 'collection_select'

@Micheal

Немного переработанная версия вашего кода:

catch (Exception ex)
{
   Type exType = ex.GetType();
   if (exType == typeof(System.FormatException) || 
       exType == typeof(System.OverflowException)
   {
       WebId = Guid.Empty;
   } else {
      throw;
   }
}

Сравнение строк уродливо и медленно.

5
задан Javier 19 June 2009 в 16:19
поделиться

4 ответа

Из docs :

Пример использования (выбор связанного автора для экземпляра сообщения , ] @post ):

collection_select(:post, :author_id, Author.all, :id, :name_with_initial)

Если @ post.author_id уже равен 1, это вернет:

<select name="post[author_id]">
  <option value="">Please select</option>
  <option value="1" selected="selected">D. Heinemeier Hansson</option>
  <option value="2">D. Thomas</option>
  <option value="3">M. Clark</option>
</select>

Итак, вам просто нужно убедиться, что @ my_object.my_method возвращает значение, соответствующее одному из доступных значений параметра. Если есть совпадение, будет выбран этот вариант.

8
ответ дан 13 December 2019 в 22:14
поделиться

Согласно docs , если @ my_object.my_method имеет то же значение, что и одна из опций, она будет выбрана по умолчанию.

И наоборот, вы можете попробовать использовать options_from_collection_for_select в сочетании с select_tag :

<%= select_tag 'my_object[my_method]', options_from_collection_for_select(@my_collection, :id, :description_string, @my_collection_object.id) %>
2
ответ дан 13 December 2019 в 22:14
поделиться

Проверить, возвращает ли @ my_object.my_method ноль. Если это так,

Если вызывающий метод возвращает nil, выбор не производится без включения: prompt или: include_blank в хэш опций.

Кроме этого, вы можете попробовать использовать лямбда, как в примере с rdoc

{:disabled => lambda {|category| category.archived? }

В вашем случае это будет выглядеть так:

{:selected => lambda {|obj| obj.id == @my_collection_object.id }}
0
ответ дан 13 December 2019 в 22:14
поделиться

Используйте : selected_value

%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {}, {:selected_value => @my_collection_object.id}) %>
1
ответ дан 13 December 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: