【问题标题】:Do I need a controller for any routes in Rails?Rails 中的任何路由都需要控制器吗?
【发布时间】:2015-01-13 20:40:00
【问题描述】:

我正在为我的应用程序中的“联系我们”页面实现一个 html 模板。我想知道我是否可以以某种方式传递该页面的链接,该链接将没有任何行为,而不必生成似乎不可能的新控制器。我尝试将模板放在公用文件夹中,然后将链接传递给 /public/contact,即模板 contact.html.erb,但 rails 返回未初始化的控制器路由错误。

这是我在 routes.rb 文件中设置的内容

获取“公众/联系人”

这是带有我的链接的 application.html.erb

   </div>
<ul>
  <li><a href="http://localhost:3000">HOME</a></li>
  <li><a href="http://localhost:3000/info/news">NEWS</a></li>
  <li><a href="http://localhost:3000/info/faq">FAQ</a></li>
  <li><a href="http://localhost:3000/public/contact">CONTACT US</a></li>
</ul>

请注意,我们还有路径 info/news 和 info/faq

我已经生成了一个控制器信息来处理所有这些静态页面。我只想知道这是否是一个好习惯,还是我应该使用其他更干燥的方式来实现这个?

【问题讨论】:

  • 每个视图都有它的控制器,它由它将执行的操作组成,不管它是静态页面还是动态页面,但控制器总是分配给页面,这也是一个好习惯.随着需求随着时间的推移而变化,您永远不知道有人可能会告诉您将验证码放入您的联系表格中:)

标签: html ruby-on-rails ruby static embedded-ruby


【解决方案1】:

为您的静态页面设置一个控制器实际上也是一个好方法,您实际上可以为 pages 生成一个控制器来处理 static pages 之类的,联系 e.t.c rails 生成控制器页面 联系方式

您只需访问它
本地主机:3000/页/联系方式

那么您的视图将位于 app/views/pages/contact.html.erb

routes.rb 获取“页面/联系人” 获取“页面/关于”

【讨论】:

    【解决方案2】:

    为什么您需要为请求生成一个新控制器。推荐的方法是在您的公共/实用程序控制器中添加一个新操作,并带有一个获取请求以显示我们的信息。 例如:match '/about' =&gt; 'pages#about' 这很好,因为您可以缓存页面以提高性能,也可以使其 dynamic(html.erb)

    假设静态文件(仅html)在public文件夹中,添加一个锚标签直接使用target=_blank属性在新页面中打开它。

    <%= link_to "About Us", "/about_us.html" ,:target=>"_blank"%>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 2017-07-05
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多