rails可以在没有控制器的情况下创建视图吗?例如,假设我有一个只链接到其他页面的页面,我是否需要为此创建一个虚拟控制器,或者我可以在我的路径文件中执行某些操作?
答案 0 :(得分:22)
我喜欢奥古斯特的答案,但我的方法略有不同。
我们假设您要添加
/any/path/somefile.html.erb
但不添加控制器...
您只需将文件夹添加到名为" application"的视图中,在该目录中创建您的文件。
然后在你的路线文件中添加
match '/any/path/somefile' => 'application#somefile'
你的erb仍在评估,你得到你的布局,你可以创建你想要的任何路径...... (所有这一切都取消了对页面控制器的需求)
希望它有所帮助...
答案 1 :(得分:15)
没有。所有请求都必须通过控制器。
我喜欢PagesController
,map.page ":action", :controller => "pages"
。这样,我就可以创建app/views/pages/foo.erb
并在/foo
上将其提供,而无需任何额外的代码。
答案 2 :(得分:3)
另一种选择是在/ public目录中添加一个静态html文件,如果你真的不需要它作为你的应用程序的一部分。
答案 3 :(得分:1)
如果你是一个勇敢的灵魂。你可以尝试边缘导轨3. Katz在他的博客上展示了这种可能性。这是链接:
http://yehudakatz.com/2009/07/19/rails-3-the-great-decoupling/
答案 4 :(得分:0)
没有。所有请求都必须通过控制器。
如果您的视图文件夹中有index.html.erb
和contact.html.erb
这样的网页。您需要创建一个名为contact
的虚拟控制器。然后,您可以从contact.html.erb
链接到index.html.erb
。并将链接指定为<%= link_to 'contact', :controller => "ads", :action => "contact" %>
此处为“广告” - &gt;控制器名称。