有没有办法从Rails控制器获取路由范围

时间:2013-03-31 17:05:04

标签: ruby-on-rails ruby ruby-on-rails-3

所以我在rails中有一个多态控制器,我的问题是,有没有办法让我获得请求者的范围。例如,溃败是/users/1/messages,请求转到MessagesController,在那个控制器中,有没有办法获得路由的users部分?或者在这种情况下它也可以是admin或其他。

我无法设置if语句结构,因为在这种情况下,`POST'/ users / 1 / messages'是发送给用户的消息,可能来自管理员。

1 个答案:

答案 0 :(得分:1)

通常你应该放置一个类型字段(例如messagable_type),一个消息实例具有相应的类(例如User),而id字段(例如messagable_id)将具有指向用户的id。所以你可以问一个消息实例:

 message.messagable
 => user

它将返回用户实例。

如果你有一个网址,例如:/users/1/messages,你想要使用它:

def load_messagable
  resource, id = request.path.split('/')[1,2]
  @messagable = resource.singularize.classify.constantize.find(id)
end

这是Ryan Bates在本集中给出的解决方案:http://railscasts.com/episodes/154