Rails关联 - 难以让form_for工作

时间:2011-05-09 18:46:07

标签: ruby-on-rails-3 associations

我有一个属于User的会员模型

class Member < ActiveRecord::Base

    attr_accessible :name
    belongs_to :user

end


class User < ActiveRecord::Base

    attr_accessible :name
    has_many :members, :dependent => :destroy

end

在我的会员控制器中我有

class MembersController < ApplicationController

  def create
    @user = User.find(params[:user_id])
    @member  = @user.members.build(params[:member])
    if @member.save
      flash[:success] = "Member created!"
      redirect_to root_path
    else
      render 'pages/home'
    end
  end
end

在/app/views/users/show.html.erb我有

<%= form_for @member do |f| %>

  <div class="field">
    <%= f.text_area :name %>
  </div>
  <div class="actions">
    <%= f.submit "Submit" %>
  </div>
<% end %>

但是我收到以下错误:     用于NilClass的未定义方法`model_name':Class

Extracted source (around line #18):

15: 
16: <h1 class="member">What's up?</h1>
17: 
18: <%= form_for @member do |f| %>

我在Users控制器中的show动作是

  def show
      @user = User.find(params[:id])
      @members = Member.new
      @title = @user.name
  end

其中还包含'新'方法

我尝试在MembersController中将user_id更改为:id,但这也不起作用。我在这里做错了什么?

提前致谢

2 个答案:

答案 0 :(得分:0)

尝试将@members = Member.new替换为@member = Member.new ;-)!

答案 1 :(得分:0)

我需要将@ user.id作为表单中的隐藏字段传递,以使关联正常工作!