0

ここに私の協会があります:

  • ユーザーは多くのプロジェクトを持っているため
  • プロジェクトは 1 人のユーザーに属します

ユーザーモデル (user.rb)

  class User < ActiveRecord::Base
     has_many :projects
     attr_accessible: :available, :department, :name, :skills, :title, :photo
  end

プロジェクトモーダル (project.rb)

  class Project < ActiveRecord::Base
     belongs_to :user, :foreign_key => :user_id
     attr_accessible :project_name
  end

これが私のshow.erb.htmlファイルのコードです

  <%= @user.projects.each do |project| %>
    <p><%= projects.project_name %></p>
  <% end %>

しかし、これは「[]」のように 2 つの括弧を表示するだけです。これは空の配列だと思います。

したがってProject.find(1)、プロジェクトがユーザーに関連付けられているかどうかを確認するために Rails コンソールで実行すると、次のように表示されます。

   => #<Project id: 2, project_name: "This is a project. ", created_at: "2012-11-12 02:29:28", updated_at: "2012-11-12 02:29:28", user_id: nil> 

ユーザーIDなし?何が得られる?!

私が間違っていることを知っている人はいますか?ありがとうございました!

編集:

外部キーを追加する移行は次のとおりです。

  class AddForeignKeyToProjects < ActiveRecord::Migration
    def change
      add_column :projects, :user_id, :integer
    end
  end

編集2

これがコントローラーのインスタンスです(これがおそらく問題です)

プロジェクトコントローラー

  def new
    @project = Project.new(params[:project], params[:user_id])   
  end

ユーザーコントローラー

  def show
    @user = User.find(params[:id], params[:project_name])

    respond_to do |format|
       format.html # show.html.erb
       format.json { render json: @user }
    end
  end
4

2 に答える 2

1

反復projectでは、ターゲットではありませんprojects

<%= @user.projects.each do |project| %>
  <p><%= project.project_name %></p>
<% end %>

---プロジェクトをユーザーに割り当てることの意味の例を次に示します--- ---このコードでは、ユーザーの寄付とメンバーですが、考え方は同じです---

donation = Donation.new(amount: random_value.to_c,
                          date_given: Random.date(1000).to_date,
                          donation_type: ['tithes', 'offering', 'undisclosed', 'building-fund'].sample)
  member = Member.all.sample
  donation.member= member
  donation.save
于 2012-12-01T19:01:24.383 に答える