2011-05-24 71 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