Загадка Выбора Страны/Состояния Ruby on Rails

Возможно, повторение того, что уже было написано, но ДА !!! Обоснование: найти ошибку только один раз. Если вы можете написать тест, который повторяет ошибку, вам не придется тестировать ее вручную - ваш автоматический тест найдет ее.
Тогда вы исправите ошибку, и вы можете быть в безопасности, зная, что ваше программное обеспечение никогда не будет страдать от этой ошибки снова. Это хорошо. Это сэкономит вам время. Это сэкономит вам деньги.

6
задан John Topley 10 June 2009 в 15:19
поделиться

3 ответа

Похоже, вы предполагаете, что переменная @person все еще доступна из вашего исходного действия. Это может быть настроено фильтром для текущего человека, но вы не показываете это в своем вопросе.

Если вам нужно снова найти @person, вам придется передать идентификатор в своей удаленной_функции, я думаю .

1
ответ дан 17 December 2019 в 20:34
поделиться

У Райана Бейтса есть Railscast, в котором показано, как выбрать категорию для продукта или создать новую категорию путем ввода имени. Это похоже на сценарий, аналогичный тому, что у вас есть, поэтому вы можете проверить его: Создать модель с помощью текстового поля .

1
ответ дан 17 December 2019 в 20:34
поделиться

Мне потребовался целый день, чтобы придумать что-то, что хотя бы "сработает". Я также использую Кармен, а также возился с тегом select в форме модели form_for (фактически, fields_for вложено в forms_for ... что добавляет дополнительные сложности).

Я бы подумал, что есть лучшее решение, но это сработало для меня. Форма должна указывать на выбор, а на параметры - нет. Таким образом, в первый раз я использую метод Carmen state_select, который правильно заполняет тег select и все вложенные теги параметров. Во второй раз просто заменяю опции. Взгляните:

В представлении я решил использовать метод наблюдения_field, поскольку я делаю и другие вещи, помимо обновления состояний (некоторые другие изменения локализации), но это должно работать и для remote_function, и для других:

<%= address_form.country_select :country, {:prompt => "--Select One--"} %>

Дон ' Меня не смущает идентификатор (user_address_attributes_country), это просто моя глупая реализация forms_for / fields_for)

<%= observe_field :user_address_attributes_country, :url => { :action => :changecountry }, :with => 'new_country' %>

<%= address_form.state_select :state, @user.address.country, {:prompt => "--Select One--"}, :style => 'width: 90px' %>

Тогда в моем контроллере это выглядит просто так:

def changecountry
  c = params[:new_country]

  respond_to do |format|
    format.html
    format.js {
      render :update do |page|
        page['user_address_attributes_state'].innerHTML = \
          "<option>--Select One--</option>" + state_options_for_select(nil, c)
      end
    }
  end
end

Примечание: state_options_for_select также принадлежит Кармен. Я не мог заставить его работать, если не поместил его в блок response_to, где, я думаю, доступны помощники представления. Кроме того, я жестко запрограммировал user_address_attributes_state , который является моим вложенным идентификатором, сгенерированным из вызова рендеринга form_for / fields_for address_form.state_select в представлении.

Надеюсь, это поможет. Если кто-то может сделать это лучше, поверьте мне, я весь уши. Со временем я изменю дизайн ... но мне нужно было что-то, что сработало бы сегодня, и это было лучшее, что я мог придумать за ограниченное время.

state_options_for_select также принадлежит Кармен. Я не мог заставить его работать, если не поместил его в блок response_to, где, я думаю, доступны помощники представления. Кроме того, я жестко запрограммировал user_address_attributes_state , который является моим вложенным идентификатором, сгенерированным из вызова рендеринга form_for / fields_for address_form.state_select в представлении.

Надеюсь, это поможет. Если кто может сделать это лучше, поверьте мне, я весь уши. Со временем я изменю дизайн ... но мне нужно было что-то, что сработало бы сегодня, и это было лучшее, что я мог придумать за ограниченное время.

state_options_for_select также принадлежит Кармен. Я не мог заставить его работать, если не поместил его в блок response_to, где, я думаю, доступны помощники представления. Кроме того, я жестко запрограммировал user_address_attributes_state , который является моим вложенным идентификатором, сгенерированным из вызова рендеринга form_for / fields_for address_form.state_select в представлении.

Надеюсь, это поможет. Если кто-то может сделать это лучше, поверьте мне, я весь уши. Со временем я изменю дизайн ... но мне нужно было что-то, что сработало бы сегодня, и это было лучшее, что я мог придумать за ограниченное время.

Я жестко запрограммировал user_address_attributes_state , который является моим вложенным идентификатором, сгенерированным из вызова рендеринга form_for / fields_for address_form.state_select в представлении.

Надеюсь, это поможет. Если кто может сделать это лучше, поверьте мне, я весь уши. Со временем я изменю дизайн ... но мне нужно было что-то, что работало бы сегодня, и это было лучшее, что я мог придумать за ограниченное время.

Я жестко запрограммировал user_address_attributes_state , который является моим вложенным идентификатором, сгенерированным из вызова рендеринга form_for / fields_for address_form.state_select в представлении.

Надеюсь, это поможет. Если кто-то может сделать это лучше, поверьте мне, я весь уши. Со временем я изменю дизайн ... но мне нужно было что-то, что сработало бы сегодня, и это было лучшее, что я мог придумать за ограниченное время.

0
ответ дан 17 December 2019 в 20:34
поделиться
Другие вопросы по тегам:

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