Ruby on rails rails关联新方法属于

Ruby on rails rails关联新方法属于,ruby-on-rails,Ruby On Rails,我有一个用户模型,它有一个程序。我想根据当前用户添加一个程序 我的代码有什么问题 def new @program = Program.new respond_to do |format| format.html # new.html.erb format.json { render json: @program } end end # POST /programs # POST /programs.json def create @program = cur

我有一个用户模型,它有一个程序。我想根据当前用户添加一个程序

我的代码有什么问题

def new
  @program = Program.new

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

# POST /programs
# POST /programs.json
def create
  @program = current_user.build_program(params[:program])

  if @program.save
    if request.xhr?
      #do nothing
    else
      redirect_to @program, notice: 'User was successfully created.'
    end
  else
    if request.xhr?
      render :status => 403
    else
      render action: "new"
    end
  end
end
编辑

此外,当发送post请求时,控制台中的post请求如下所示:

Started POST "/programs" for 127.0.0.1 at 2013-06-12 17:42:46 +0300
Processing by ProgramController#index as */*
Parameters: {"utf8"=>"✓", "authenticity_token"=>"m21h2SRHJ1A9TlKVIdwZOwodKx+vPEx16dd5z936LmY=", "program"=>{"title"=>"baslik", "details"=>"deneme"}}

但是这个元组不会被添加到数据库中。

如果你想在
所属的关联上实例化一个新对象,你必须使用它。因此,不是:

@program = current_user.program.new(params[:program])
做:

如果这样做,就不必再显式设置外键。您可以删除以下行:

@program.user_id = current_user.id
您也可以在
def new
中使用此概念:

@program = current_user.build_program

如果我在create中使用@program=program.new(params[:program].merge(:user\u id=>current\u user.id))会发生什么?与使用
current\u user.build\u程序(params[:program])
时相同。谢谢。但将其添加到数据库中仍然存在问题。我编辑了这个问题。是的,我编辑了。属性可访问:详细信息,:标题,:用户_id@Yagiz你的路线设置正确吗?看起来帖子是由index操作处理的,而不是由create处理的<代码>程序控制器处理#索引为*/*
请检查和/或发布config/routes.rb。
@program = current_user.build_program