【发布时间】:2010-10-11 22:18:58
【问题描述】:
真的可以使用你的帮助,了解这个复杂的导轨问题,我一直在用头撞墙……
我有以下型号:
Permissions (user_id, role_id, project_id)
Roles (id, name)
Projects (id, name)
权限是角色和项目的 Y 模型。
我正在努力制作一个表单以允许用户添加或更新用户的项目权限
在控制器中我有:
@project = Space.find(params[:project_id])
@permission = @project.permissions.find_by_user_id(params[:user_id])
然后在视图中:
<%=form_for [:space, @permission] do |f| %>....
但这不起作用,错误:
如果(用户和项目)的条件在 DB 中没有任何记录:“未定义方法 `model_name' for NilClass:Class”
如果数据库中有记录,则表示用户确实在此项目中具有角色:
"No route matches {:action=>"destroy", :controller=>"permissions", :project_id=>#<Permission project_id: 3, role_id: 2, user_id: 13>}"
理想情况下,我希望此表单显示给定(已使用/项目)的当前权限...如果没有当前权限,我希望此人能够创建记录。
有人在 Rails 3 中体验过这种类型的关系吗?感谢您提供任何可以发送给我的提示。
Routes 文件(特定于这些模型的部分)
resources :projects do
resources :photos, :permissions
collection do
get 'yourcurrentprojects'
end
end
控制器
- 用户授予 CRUD 权限选项的路径:/projects/3/permissions
- 我相信我想使用 Permissions.rb def Show 和 def Update 来获取和设置权限?
【问题讨论】:
-
刚刚更新,所以“进度”仍然没有工作
-
能够将 FORM 更新为“”,但这仅适用于创建新权限。如何显示当前权限,然后允许用户创建/更新?谢谢!
-
还尝试了“@permission = @project.permissions.find_by_user_id(params[:user_id])”,但得到的是:“NilClass:Class 的未定义方法 `model_name'”
-
刚刚更新了问题,使其更加清晰。希望。如果不是,请告诉我。谢谢
-
您发布了您的路由文件(这些模型特有的部分),以及您希望表单路由到哪个控制器操作?
标签: ruby-on-rails ruby-on-rails-3