小编Mat*_*ias的帖子

Rails-构造管理员/用户/公共控制器的方式

虚构的Rails应用程序具有以下资源:

Photographers
Images
Comments
Run Code Online (Sandbox Code Playgroud)

A Photographer有很多Images,有很多Comments

每位摄影师都有登录,能够查看,上传,编辑和删除他们的图像,评论以及他们自己的个人资料.

管理界面可用,可以编辑图像,摄影师和评论.

此外,摄影师,他们的图像和评论可以从公共界面获得,无需登录,访问者可以添加评论.

我的问题是:什么是Rails-构建控制器的方式?我正在考虑为每个"角色"(公共,帐户,管理员)使用名称空间,如下所示:

# For administrator
Admin::PhotographersController
Admin::ImagesController
Admin::CommentsController

# For a logged in photographer
AccountController (?)
Account::ImagesController
Account::CommentsController

# For public
PhotographersController
ImagesController
CommentsController
Run Code Online (Sandbox Code Playgroud)

但是 - 这些控制器的一些方法是重叠的.这是最好的方式,即使它不是那么干?

谢谢!

controller ruby-on-rails

5
推荐指数
1
解决办法
353
查看次数

Bundler不工作:在`[]':undefined方法`[]'表示false:FalseClass

在安装(和删除)Compass后,我的Rails应用程序遇到了一些麻烦.bundle install给我以下内容:

/Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler 1.0.0.beta.2/lib/bundler/settings.rb:10:in `[]': undefined method `[]' for false:FalseClass (NoMethodError)
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/settings.rb:32:in `without'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/settings.rb:26:in `without='
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/cli.rb:105:in `install'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor/task.rb:33:in `run'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor/invocation.rb:109:in `block in invoke'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor/invocation.rb:116:in `call'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor/invocation.rb:116:in `invoke'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor.rb:159:in `block in start'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor/base.rb:378:in `start'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/lib/bundler/vendor/thor.rb:138:in `start'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/bundler-1.0.0.beta.2/bin/bundle:13:in `<top (required)>'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/bin/bundle:19:in `load'
from /Users/[..]/.rvm/gems/ruby-1.9.2-head@rails3beta/bin/bundle:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我已经尝试清理gemset并重新安装Bundler和其他宝石而没有运气.我也尝试创建一个新的应用程序 - 捆绑正常工作在这里,所以我想这个问题是withint我的应用程序代码的地方,但我不知道去哪里找.

有任何想法吗?:-) 多谢你们.

ruby ruby-on-rails bundler

2
推荐指数
1
解决办法
2796
查看次数

Rails3路由:具有命名空间的资源

在定义路由时是否可以定义命名空间参数,如下所示:

resource :account, :namespace => :account do
    resources :comments
end
Run Code Online (Sandbox Code Playgroud)

所以/account/comment打电话Account::CommentsController而不是公正CommentsController.就像一个注释, :namespace上面的选项似乎不起作用.

我当然可以添加:controller => 'account/comments'到评论资源,但是有很多嵌套资源,这不是很干.

还有更好的方法吗?

谢谢你们 - 你摇滚!

routing ruby-on-rails ruby-on-rails-3

1
推荐指数
1
解决办法
1164
查看次数