Как использовать гем carmen-rails в моем проекте?

Я хочу использовать carmen-rails gem в своем проекте rails, но в документации на github я не могу этого сделать. Я хорошо понимаю, как его использовать, поэтому я думаю: если, например, я хочу, чтобы у моих пользователей была страна и штат:

сначала: я должен добавить 2 столбца в свою пользовательскую модель (страна и штат), правильно?

второй: добавить выбор страны и штата в мою пользовательскую форму:

<%= simple_form_for @user do |f| %>
<div class="field">
  <%= f.label :country_code %><br />
  <%= f.country_select :country_code, priority: %w(US CA), prompt: 'Please select a country' %>
</div>

<div class="field">
  <%= f.label :state_code %><br />
  <%= render partial: 'subregion_select', locals: {parent_region: f.object.country_code} %>
</div>
<% end %>

тогда мой частичный должен выглядеть так:

<div id="order_state_code_wrapper">
<% parent_region ||= params[:parent_region] %>
<% country = Carmen::Country.coded(parent_region) %>

<% if country.nil? %>
  <em>Please select a country above</em>
<% elsif country.subregions? %>
  <%= subregion_select(:order, :state_code, parent_region) %>
<% else %>
  <%= text_field(:order, :state_code) %>
<% end %>

I'm right ?

тогда как проверить страну и указать, когда форма отправлена?

наконец, как изменить язык стран и штатов в форме выбора (например, на французский)?


person medBouzid    schedule 23.09.2013    source источник


Ответы (1)


Да и да.

Взгляните на их демонстрационное приложение: https://github.com/jim/carmen-demo-app/

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

например (маршруты.rb)

get '/users/subregion_options' => 'users#subregion_options'
resources :users

например (users_controller.rb)

def subregion_options
  render partial: 'subregion_select'
end

Вам нужно добавить JS, чтобы поймать событие изменения при выборе стран, а затем с кодом страны вызвать метод контроллера пользователей, чтобы частично отобразить состояния.

например (пользователи.js.кофе)

$ ->
  $('select#user_country_code').change (event) ->
    select_wrapper = $('#user_state_code_wrapper')

    $('select', select_wrapper).attr('disabled', true)

    country_code = $(this).val()

    url = "/users/subregion_options?parent_region=#{country_code}"
    select_wrapper.load(url)

Вы можете обрабатывать проверку класса модели пользователя, как обычно. Пример приложения содержит информацию об изменении языковых стандартов.

person robvelor    schedule 08.11.2013