没有控制器的rails视图

问题描述 投票:0回答:6

rails 可以在没有控制器的情况下处理创建视图吗?例如,假设我有一个仅链接到其他页面的页面,我是否需要为此创建一个虚拟控制器,或者我可以在我的路由文件中执行某些操作吗?

ruby-on-rails
6个回答
29
投票

我喜欢八月的答案,但我有一个稍微不同的方法。

假设您要添加

/any/path/somefile.html.erb

但不添加控制器...

您可以将文件夹添加到名为“应用程序”的视图中,然后在该目录中创建文件..

然后在你的路由文件中添加

match '/any/path/somefile' => 'application#somefile'

你的 erb 仍在评估,你得到你的布局,你可以创建任何你想要的路径...... (这一切都是为了消除对页面控制器的需要)

希望有帮助...


16
投票

不。所有请求都必须通过控制器。

我喜欢有一个

PagesController
,有
map.page ":action", :controller => "pages"
。这样,我就可以创建
app/views/pages/foo.erb
并在
/foo
上使用它,而无需任何额外的代码。


4
投票

如果您确实不需要将静态 html 文件作为应用程序的一部分,则另一种选择是在 /public 目录中添加静态 html 文件。


1
投票

如果你是一个勇敢的灵魂。您可以尝试 Edge Rails 3。Katz 在他的博客上演示了这种可能性。这是链接:

http://yehudakatz.com/2009/07/19/rails-3-the-great-decoupling/


1
投票

不。所有请求都必须通过控制器。

如果您的视图文件夹中有类似

index.html.erb
contact.html.erb
的页面。您需要创建一个名为
contact
的虚拟控制器。然后您可以从
contact.html.erb
链接到
index.html.erb
。并在此处将链接指定为
<%= link_to 'contact', :controller => "ads", :action => "contact" %>
“广告”-> 控制器名称。


0
投票

Rails 无需控制器操作即可处理视图

我还没有测试它是否可以在没有控制器的情况下工作,但没有控制器操作它可以工作。

12 年后,Rails,7。

路线

resources :invoices

发票_controller.rb

  before_action :authorize_action

  # def index
  #
  # end

  private 

  def authorize_action
     ....
  end

发票/index.haml

=> 有效!!

但是如果索引被注释掉或没有被注释掉,

authorize_action
方法就会触发。

© www.soinside.com 2019 - 2024. All rights reserved.