Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.1 Ruby/Rails:如何通过视图中的字符串或模型中的路由URL指定任意路由路径_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 3.1 Ruby/Rails:如何通过视图中的字符串或模型中的路由URL指定任意路由路径

Ruby on rails 3.1 Ruby/Rails:如何通过视图中的字符串或模型中的路由URL指定任意路由路径,ruby-on-rails-3.1,Ruby On Rails 3.1,这一点整晚都让我很沮丧,我找不到一个有帮助或干净的方法来做 我有一个非ActiveRecord模型(因此不存储在DB中),它反映了一个动态导航菜单,模型菜单项的一个属性自然是路由链接。(讨论中的模型本质上有一个类,其中存储了指向其他模型路由的链接/路由)我不喜欢在模型中存储URL或任何导航数据,但我看不到更好的设计方法 link_to属性可以是一个路由路径(例如user_path),作为一个字符串,在视图中用于确定URL。或者,它可以通过URL\u助手从路由中检索,作为URL存储在模型中。(我想

这一点整晚都让我很沮丧,我找不到一个有帮助或干净的方法来做

我有一个非ActiveRecord模型(因此不存储在DB中),它反映了一个动态导航菜单,模型菜单项的一个属性自然是路由链接。(讨论中的模型本质上有一个类,其中存储了指向其他模型路由的链接/路由)我不喜欢在模型中存储URL或任何导航数据,但我看不到更好的设计方法

link_to属性可以是一个路由路径(例如user_path),作为一个字符串,在视图中用于确定URL。或者,它可以通过URL\u助手从路由中检索,作为URL存储在模型中。(我想)

那么,有没有人对可以解决问题的助手或技巧有什么建议?url\u helper和url\u用于某种类型的预期模型,该模型具有匹配的路由。在这种情况下,非ActiveRecord模型不是普通模型,而是站点导航菜单的表示形式,链接到站点的其他部分

我真的只想要一个助手或函数,比如说,路由到“用户路径”。有人知道这是否可能吗


任何帮助都将不胜感激。谢谢

除了我可能滥用MVC模型之外,答案是Rails.application.routes.url\u helpers。您可以使用route path作为直接方法调用它,它将返回url,但我发现的技巧是send方法允许使用路由路径的字符串表示形式调用它。这使得为它编写代码更加容易。请注意,这是按原样工作的。这只是一个例子:

class Something
    attr_accessor :somethings
    def all()
        @somethings = Array.new
        somethings << Something.new('user_root_path')
        somethings << Something.new('edit_user_path')
        somethings << Something.new('edit_pets_path')
    end

    ...

    def initialize(link)
        @link = Rails.application.routes.url_helpers.send link
    end
end
分类
属性访问器:一些东西
def all()
@somethings=Array.new
有些事