1

友達のネストされたフォームフィールドは、私が何をしても表示されません..accepts_nested_attributesが正しく設定されていると思いますか..

    views/user_steps/show.html.erb

    <%= simple_form_for @user do |f| %>

    <%= f.input :city %>
    <%= f.input :address %>
    <%= f.input :zipcode %>
    <%= f.input :date_of_birth %>
    <%= f.input :gender, :collection => ['male','female'] %>

    <%= f.association :interests, :as => :check_boxes, :label => false %>


    <%= f.association :holidays, :as => :check_boxes, :label => false %>


    <%= f.simple_fields_for :friends do |friend_f| %>
    <%= friend_f.input :name %>
    <%= friend_f.input :dob %>
    <%= friend_f.input :gender %>
     <% end %>

    <%= f.button :submit %>
    <%end%>


class UserStepsController < ApplicationController

  def show
    @user = current_user 
  end

  def update
    @user = current_user
    @user.attributes = params[:user]
    @friend = Friend.new(params[:friend])
  end

  def new
    @user = User.new
    @user.build_friend
  end


end

class UsersController < ApplicationController
  before_filter :authenticate_user!

  def index
    authorize! :index, @user, :message => 'Not authorized as an administrator.'
    @users = User.paginate(:page => params[:page])
  end

  def show
    @user = User.find(params[:id])
  end
  def create
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'Friend birthday(1) was successfully created.' }
        format.json { render json: @user, status: :created, location: @user }
      else
        format.html { render action: "new" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    @user = User.find(params[:id])

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

  # DELETE /users/1
  # DELETE /users/1.json
  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :no_content }
    end
  end
end

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation, :interests_attributes, :remember_me, :city, :zipcode, :date_of_birth, :gender, :address, :interest_ids, :holiday_ids
  has_and_belongs_to_many :holidays
  has_and_belongs_to_many :interests
  has_many :friends
  accepts_nested_attributes_for :friends,  allow_destroy: true
  accepts_nested_attributes_for :interests, allow_destroy: true
  accepts_nested_attributes_for :holidays, allow_destroy: true

class Friend < ActiveRecord::Base
  belongs_to :user
  attr_accessible :dob, :gender, :name
end
4

2 に答える 2

8

私の推測では、それ@userには友達がいないので、レンダリングするものは何もありません。

これが新しいユーザーを作成していて、彼らが友達も入力できるようにしたい場合は、@user.friends.buildどこかで空の友達を追加し、ネストされたフィールドをレンダリングできるようにする必要があります。

于 2012-05-16T05:17:34.780 に答える
0

私はこの答えをネットで何度か見つけました。Rails 4.2.0でruby-2.2.0を使用しています。これが変わったのか、それとも私に特有のものなのか知りたいです。

私は使用しなければなりませんでした。 @user.build_friends

于 2015-03-25T00:36:48.040 に答える