0

userモデルがあり:has_one detailます。ユーザーではform_for、ユーザーの詳細を選択するドロップダウンが必要time_zoneです。

私はもう試した

<% form_for @user do |f| %>
    ... user stuff ...

    <%= f.select :"detail.time_zone", ...other args... %>
<% end %>

しかし、私NoMethodErrorはdetail.time_zone. これを行うための正しい構文は何ですか?または、この方法で行うことができない場合は、どのようにすればよいですか?

4

2 に答える 2

3

accepts_nested_attributes_forユーザーモデルで使用することを忘れないでください:

class User < ActiveRecord::Base
  has_one :detail
  accepts_nested_attributes_for :detail
end

詳細モデル:

class Detail < ActiveRecord::Base
  belongs_to :user
end

ユーザーコントローラー:

class UsersController < ActionController::Base
  def new
    @user = User.new
    @user.build_detail
  end
end

ユーザー新規/編集ビュー:

<% form_for @user do |u| %>
  <% u.fields_for :detail do |d| %>
    <%= d.select :country, Country.all.map { |c| [c.name, c.id] }
    <%= d.time_zone_select :time_zone %>
  <% end %>
<% end %>
于 2010-06-24T11:43:18.920 に答える
0

なぜ後にコロンがあるのf.selectですか?また、そうあるべきであり、そうでは<%=...ありません<%..

テーブルに「time_zone」列があるとすると、

<% form_for @user do |f| %>
    ... user stuff ...
    
    # args: user object, time_zone method, prioritizing zones(separating list), default
    <%= f.time_zone_select :time_zone, nil, :default => "Pacific Time (US & Canada)", :include_blank => false %>
<% end %>

追加リソース:

http://railscasts.com/episodes/106-time-zones-in-rails-2-1

http://railsontherun.com/2007/12/21/timezone-selection/

于 2010-06-24T09:58:30.033 に答える