2012-05-24 70 views
1

我正在使用三種模型:用戶,項目和用戶權限。 userprivilege模型由user_id,project_id和accessLevel值組成。用戶和項目模型與用戶權限具有'has_many'關係,並且具有'has_many,through'關係。Rails 3,通過中間頁面獲取對象的ID

當用戶創建項目時,會在userprivileges表中創建相應的條目。我不確定如何爲用戶與其他用戶共享項目的情況創建這樣的條目。在這種情況下,用戶訪問項目頁面,單擊鏈接以共享對項目的訪問權限,並指定目標用戶的電子郵件。

我將這種情況與UserprivilegesController中的'new'操作關聯起來。在「創建」操作中,我可以訪問共享項目的用戶對象(使用電子郵件ID),但我不確定如何獲取共享項目的項目ID。有沒有辦法在用戶訪問項目頁面並點擊共享訪問鏈接時存儲項目ID?

謝謝。


感謝Aldo的評論,我能解決這個問題。但是,我有一個相關的問題:是否可以使用routes.rb文件來解決這個問題。我可以在項目路線中包含UserPrivilege操作的路線嗎?作爲例子,如:/ projects/1/userprivileges/new或/ projects/1/userprivileges/1/edit。然後,我可以從URI獲取項目ID。但是,限制是必要的,這樣userprivileges纔可以從它們相關的項目中訪問,所以像/ projects/2/userprivileges/1/edit這樣的東西是不允許的。我怎麼能實現這個限制?

回答

0

您應該通過project_idUserprivilegesController#new。使用link_to選擇做這個項目中的觀點,例如:

# app/views/project.html.erb 
<%= link_to "Share access", {controller: 'userprivileges', action: 'new', project_id: @project.id} 

然後,一旦在控制你使用params[:project_id]得到的參數此值,並在使用隱藏字段的形式添加的地方(使用hidden_fieldhidden_field_tag取決於你的建築形式)。

想法是在用戶提交表單時通過project_id,以便UserprivilegesController#create操作可以使用(再次params[:project_id])訪問它。

+0

謝謝你,工作。我想知道是否有可能以另一種方式使用routes.rb文件解決這個問題。我可以在項目路線中包含UserPrivilege操作的路線嗎?作爲例子,如:/ projects/1/userprivileges/new或/ projects/1/userprivileges/1/edit。然後,我可以從URI獲取項目ID。但是,限制是必要的,這樣userprivileges纔可以從它們相關的項目中訪問,所以像/ projects/2/userprivileges/1/edit這樣的東西是不允許的。 – user1415505

+0

如果解決了您的問題,請考慮接受答案。 對於其他問題是很多東西。 1)關於路由,請閱讀Rails路由指南(http://guides.rubyonrails.org/routing.html)。 2)對於*授權*,我建議你看看我們心愛的英雄Ryan Bates(RailsCasts)的CanCan gem(http://railscasts.com/episodes/192)。 –

相關問題