2011-05-24 72 views
0

我有一个group#view页面,即可通过Person访问。在此页面中,Person可以通过我开发的方法查看group的成员。问题是我需要使用来自group的Id,来自person的ID访问页面以及来自groupmember的ID来创建模型HonorsRails - 在表单中获取3个ID

在我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| %> 

任何帮助吗?

谢谢。

+0

current_person从哪里来? – Ant 2011-05-24 14:01:44

+0

这是工作它来自会话控制。谁访问该页面将成为'current_person'。我知道在':honored => Person.find(current_person)'中,'current_person'不应该在那里,但我只是不知道该放什么。 – Zeroz 2011-05-24 14:12:57

回答

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而不是另一个查询

+0

感谢您的回答!我会马上试试这个。我尝试了一些其他的东西,并提出了一个新的问题,试图通过这些“新形式”。你可以看一下吗? http://stackoverflow.com/questions/6112340/rails-need-help-in-this-form – Zeroz 2011-05-24 15:03:41