使用表单在Rails中保留嵌套资源

时间:2012-06-24 19:14:48

标签: ruby-on-rails ruby-on-rails-3

我有一个form_for,可以对以下操作/对象进行操作:

   def new
     @student = Students.new
   end

此外,从以下路径调用表单

   schools/4/students/new

将学校ID(本例中为4)保存到数据库中的新学生记录的最佳方法是什么?我无法用它预加载@student对象,因为它在下一个请求时丢失了。我在表单中使用了hidden_​​field,但在rails中必须有更好的方法。谢谢。

1 个答案:

答案 0 :(得分:1)

students控制器:

def new
  @school = School.find(params[:school_id])
  @student = @school.students.build
end

def create
  @school = School.find(params[:school_id])
  @student = @school.students.build(params[:student])
  if @student.save
    ...
  else
    ...
  end
end

形式:

<%= form_for([@school, @student]) do |f| %>
...
<% end %>