Rails - 在表单中获取3个ID

时间:2011-05-24 13:48:10

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

我有一个group#view页面,可由Person访问。在此页面中,Person可以通过我开发的方法查看group的成员。问题是我需要使用Honors中的ID,访问该页面的group中的ID以及来自person的ID来创建模型member这个group

在我的Honors控制器中,我有:

def create
  @person = Person.find(current_person)
  @honor = Honor.create(:group => Group.find(params[:group_id]), 
  :person => Person.find(current_person), :honored => Person.find(current_person))
 if @honor.save
 ...
end

问题在于:honored => Person.find(current_person),这是没有得到正确的ID,我不知道如何获得它。

在我看来:

 <% @asked_groupmembership.each do |agm| %>
 <% form_for(:honor, :url => honors_path(:group_id => @group.id, :person => current_person.id,:honor => agm.member.id)) do |f| %>

任何帮助?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您需要3个组件来正确创建荣誉记录,则需要从表单中传递它们。你似乎正确地做了那个部分。

:group_id => @group.id
:person => current_person.id
:honor => agm.member.id

要创建记录,请访问传递的变量。

Honor.create(:group => Group.find(params[:group_id]),
             :person => Person.find(params[:person]),
             :honored => Person.find(params[:honor]))

理解上述内容并不是最有效的,但用于演示目的。您可能希望避免冗余数据库命中,例如:person => current_person而不是其他查询