首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单个资源和多个资源

单个资源和多个资源
EN

Stack Overflow用户
提问于 2009-10-24 03:23:43
回答 2查看 1.3K关注 0票数 1

我有一个模型白色标签和一个用户has_many:

我有一个自定义的方法current_whitelabel (就像current_user的authlogic或restful_auth )

我希望我的用户管理他们的白标(即: edit_whitelabels_path(id))。

但我不想在参数中发送白色标签ID,当它引用current_whitelabel时。

所以我的想法是创建两个资源: map.resources白标和map.resource白标。

但我不太喜欢这个。有没有更性感的方法来实现它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-24 20:56:21

好了,我终于解决了我的问题。

每个白标都有自己的子域(感谢subdomain_fu),所以我只需要在我的路由中有一个资源白标,就可以在我的current_whitelabel上执行操作,如果我想在其他白标上执行操作,我只需要切换子域。

感谢EmFi试图回答我奇怪的问题。

票数 1
EN

Stack Overflow用户

发布于 2009-10-24 03:32:40

在你的控制器操作中,你可以这样做:

代码语言:javascript
复制
class WhitelabelsController < ActionController
  def edit
    @whitelabel = params[:id] ?  Whitelabel.find(params[:id]) : current_whitelabel
    redirect_to whitelabels_url unless @whitelabel
    ....
  end
  ...
end

现在,rails会将/whitelabel/edit视为/whitelabel/edit/#{current_whitelabel.id},而不指定id。

如果这种情况发生在多个操作中,您可以将其作为“之前”筛选器进行操作。只需确保从单个操作中删除所有@whitelabel = Whitelable.find(params[:id])行。

代码语言:javascript
复制
class WhitelabelsController < ActionController
  before_filter :select_whitelabel, :except => [:index, :new]

  def select_whitelabel
    @whitelabel = params[:id] ?  Whitelabel.find(params[:id]) : current_whitelabel
    redirect_to whitelabels_url unless @whitelabel
  end
  ...
end

回答评论中更清晰的问题:你可以使用一个单独的资源与上面的代码一起使用,以获得你想要的效果。

config/routes.rb

代码语言:javascript
复制
map.resource :my_whitelabel, :controller => "whitelabels", :member => {:dashboard => :get}

然后在白色标签控制器中使用上面的代码。这通过对具有相同动作的不同路径使用相同的控制器来使事情保持干爽。该资源定义了一个仪表板操作,因此您也必须将其添加到控制器中。但是如果你使用的是before_filter版本,应该没有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1615426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档