0

我想carmen-rails在我的 Rails 项目中使用 gem,但是在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 %>

我是正确的 ?

那么如何在提交表单时验证国家和州?

最后如何在选择表单中更改国家和州的语言(例如法语)?

4

1 回答 1

1

是的,是的。

看看他们的演示应用程序:https ://github.com/jim/carmen-demo-app/

您需要添加路由来填充状态部分,然后添加适当的控制器方法来呈现部分状态。不要忘记先定义部分路由,然后再定义用户控制器路由。

例如(routes.rb)

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

例如(users_controller.rb)

def subregion_options
  render partial: 'subregion_select'
end

您需要添加一些 JS 来捕获国家/地区选择的更改事件,然后使用国家/地区代码调用用户控制器方法以呈现部分状态。

例如(users.js.coffee)

$ ->
  $('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)

您可以照常处理用户模型类的验证。示例应用程序包含有关更改语言环境的信息。

于 2013-11-08T23:39:14.740 回答