0

これはよくあるエラーのようで、私は多くの返信を読みました。何か馬鹿げたものが欠けているに違いない。

1つの場所でアクティビティがあります。(Has_one)。私はaccepts_nested_attributes_for:locationを設定しました、私は単数形/複数形の権利を持っていると信じています(すべて単数形、それはhas_one関係です)。(各属性のattr_accessibleを個別にリストしてみましたが、サイコロはありません。)サーバーを再起動しました。それでも、私は取得し続けます:

保護された属性を一括割り当てできません:住所、location_name、phone_number、district、postcode、city、country、lat、

class Activity < ActiveRecord::Base
  attr_accessible :beer, :user, :whatdoing, :where, :with, :location_id, :location_attributes

  has_one :location, :dependent => :destroy

  accepts_nested_attributes_for :location


  validates :whatdoing, :numericality => { :only_integer => true, :greater_than => -1}
end


class Location < ActiveRecord::Base
  validates_presence_of :address

  belongs_to :activity

end

アクティビティコントローラー:

# GET /activities/new.json
  def new
    @activity = Activity.new

    @activity.build_location

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @activity }
    end
  end

  # PUT /activities/1
  # PUT /activities/1.json
  def update
    @activity = Activity.find(params[:id])


    respond_to do |format|
      if @activity.update_attributes(params[:activity])
        format.html { redirect_to @activity, notice: 'Activity was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @activity.errors, status: :unprocessable_entity }
      end
    end
  end

シンプルなものに違いないが、見つけられない。

前もって感謝します!

関連するフォームコードの追加:

<%= form_for(@activity) do |activity_form| %>
  <% if @activity.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@activity.errors.count, "error") %> prohibited this activity from being saved:</h2>

      <ul>
      <% @activity.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= activity_form.label :whatdoing, "Thinkin" %>
    <%= activity_form.radio_button :whatdoing, 0 %>
    <%= activity_form.label :whatdoing, "Drinkin" %>
    <%= activity_form.radio_button :whatdoing, 1 %>
  </div>
  <div class="field">
    <%= activity_form.label :beer %>
    <%= activity_form.text_field :beer %>
  </div>
  <div class="field">
    <%= activity_form.label :where %>
    <%= activity_form.text_field :where %>
  </div>
  <div class="field">
    <%= activity_form.label :with %>
    <%= activity_form.text_field :with %>
  </div>

<%= activity_form.fields_for :location do |location_fields| %>
<div class="field search">
    <%= label_tag :search %>
    <%= text_field_tag :location_search, nil, :size => 60, :type => "search" %>
  </div>

  <br />

  <div class="field">
    <%= location_fields.label :address, "Full Address" %>
    <%= location_fields.text_field :address, :size => 60 %>
  </div>

  <div class="field">
    <%= location_fields.label :location_name %>
    <%= location_fields.text_field :location_name, :size => 18 %>

    <%= location_fields.label :phone_number %> 
    <%= location_fields.text_field :phone_number, :size => 18 %>
  </div>

  <div class="field">
    <%= location_fields.label :district %>
    <%= location_fields.text_field :district, :size => 18 %>
    <%= location_fields.label :postcode %>
    <%= location_fields.text_field :postcode, :size => 6, :type => 'number' %>
  </div>

  <div class="field">
    <%= location_fields.label :city %>
    <%= location_fields.text_field :city, :size => 18 %>

    <%= location_fields.label :country %> 
    <%= location_fields.text_field :country, :size => 18 %>
  </div>

  <div class="field">
    <%= location_fields.label :lat %>
    <%= location_fields.text_field :lat, :size=> 18 %>
    <%= location_fields.label :lng %>
    <%= location_fields.text_field :lng, :size=> 18 %>
  </div>
<% end %>

  <%= render :partial => "googlemap" %>


  <div class="actions">
    <%= activity_form.submit %>
  </div>

<% end %>
4

3 に答える 3

1

ネストされたフィールドを含むフォームが表示されないと、エラーから、fields_for場所のループを省略したように見えます-次のようになります

<%= f.fields_for :location do |f| %>
    <%= render :partial => "locations/form", :locals => {:f => f} %>
<% end -%>

これにより、ネストされたフィールドのフォームが読み込まれ、アクティビティの場所の属性を設定しようとしていないことが確認されます。

于 2012-08-31T16:10:23.920 に答える
0

すべての属性の場所モデルで attr_accessible が欠落していたことがわかりました。それらを追加しましたが、すべて問題ありません。

于 2012-09-07T13:07:14.457 に答える
0

Rails 3 以降では、属性の一括割り当てには attr_writer または attr_accessor, attr_accessible が必要です

これらの属性に対していくつかの書き込み権限を作成する必要があります

住所、場所名、電話番号、地区、郵便番号、都市、国、緯度、

于 2012-08-31T16:45:42.520 に答える