【问题标题】:Ruby on Rails 4 Routing/Views/PathRuby on Rails 4 路由/视图/路径
【发布时间】:2014-09-17 13:48:13
【问题描述】:

我有两个问题:

我有一个叫做主页的控制器。我的主页的视图目录中有一个名为 samplegraph 的视图。我想让路由正常工作,以便 www.homepage.com/samplegraph 将我带到示例图页面。

据我所知,它在 routes.rb 中的路由应该是这样的:

GET 'homepage/samplegraph' => 'homepage#showgraph1'

如果我正确理解 Rails 路由,则此语句会将 GET 请求路由到主页/示例图到主页控制器的 showgraph1 操作。在这一点上,我不是特别确定 showgraph1 操作应该是什么才能呈现视图页面(示例图)。目前这个动作是空的。我真的不知道在这里放什么。

第二个问题:

另外,当我研究 Rails 路由时,我正在研究基于资源的路由。出于我的目的,我不需要由此产生的大部分内容。我感兴趣的一件事是调用基于资源的路由会通过帮助程序自动为您生成路径(我认为?)。

如何为我的路由生成路径,以便我能够使用 link_to 方法将应用程序的各个部分链接在一起?任何帮助/cmets 将不胜感激。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    首先,如果您想通过点击“www.homepage.com/samplegraph”获得“samplegraph”页面,则需要更新您的路线。

    替换

    get 'homepage/samplegraph' => 'homepage#showgraph1'
    

    get '/samplegraph' => 'homepage#showgraph1'
    

    现在在homepage 控制器的showgraph1 操作中,您需要在操作的最后一行呈现samplegraph 视图页面。

    render 'samplegraph'
    

    第二个问题,只需从您的应用目录中点击终端上的rake routes。它将显示所有带有助手的路线,您可以使用link_to。与 link_to 一起使用时,您需要将 _path 附加到这些路由中

    【讨论】:

    • 太棒了!由于您是 SO 新手,我想建议您作为一个优秀的学习者和贡献者,您应该接受解决您问题的答案
    • 有没有办法将多个答案标记为有帮助? Mandeep 的回答帮助我解决了 helpers/Path 问题。
    • 对不起.. 那是不可能的 :( 你不能接受多个答案,但你可以投票给多个...
    【解决方案2】:

    就像@RAJ说的首先你需要改变你的路线

    get '/samplegraph' => 'homepage#showgraph1'
    

    At this point I'm not particularly sure what the showgraph1 action should be in order to render the view page(samplegraph)

    Rails 不关心你的动作是否为空,即使它是空的,它仍然会呈现你的动作视图。因为你的动作被命名为 showgraph1 所以它会让 Rails 使用路径 views/homepage/showgraph1.html.erb 查找 showgraph1.html.erb

    要更改此行为,您需要在操作中使用 render 'samplegraph'

    One thing I am interested in is that invoking resource based routing automatically generates Paths for you via helpers(I think?)

    Rails 为每个路由生成路径和 url 帮助器,它不依赖于你的路由是如何定义的,但是你可以通过指定 as: 选项来自定义你的帮助器方法

    get 'homepage/samplegraph' => 'homepage#showgraph1', as: 'showgraph'
    

    这将使您的辅助方法showgraph_path and showgraph_url

    【讨论】:

    • 好的,所以我的操作没有在第一次渲染,因为我的操作名称和视图名称不对应。
    • @user3731368 这是因为默认情况下,rails 会查找与您的操作同名的视图。您需要使用渲染在您的操作中提及它
    • 另外,如果我想使用 link_to 在我的页面之间创建链接,会是这样吗?
    • @user3731368 是的 showgraph_path 会给你的路径助手。您可以通过在终端中运行 rake 路由来查看所有辅助方法
    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多