rails 可以在没有控制器的情况下处理创建视图吗?例如,假设我有一个仅链接到其他页面的页面,我是否需要为此创建一个虚拟控制器,或者我可以在我的路由文件中执行某些操作吗?
我喜欢八月的答案,但我有一个稍微不同的方法。
假设您要添加
/any/path/somefile.html.erb
但不添加控制器...
您可以将文件夹添加到名为“应用程序”的视图中,然后在该目录中创建文件..
然后在你的路由文件中添加
match '/any/path/somefile' => 'application#somefile'
你的 erb 仍在评估,你得到你的布局,你可以创建任何你想要的路径...... (这一切都是为了消除对页面控制器的需要)
希望有帮助...
不。所有请求都必须通过控制器。
我喜欢有一个
PagesController
,有map.page ":action", :controller => "pages"
。这样,我就可以创建 app/views/pages/foo.erb
并在 /foo
上使用它,而无需任何额外的代码。
如果您确实不需要将静态 html 文件作为应用程序的一部分,则另一种选择是在 /public 目录中添加静态 html 文件。
如果你是一个勇敢的灵魂。您可以尝试 Edge Rails 3。Katz 在他的博客上演示了这种可能性。这是链接:
http://yehudakatz.com/2009/07/19/rails-3-the-great-decoupling/
不。所有请求都必须通过控制器。
如果您的视图文件夹中有类似
index.html.erb
和 contact.html.erb
的页面。您需要创建一个名为 contact
的虚拟控制器。然后您可以从 contact.html.erb
链接到 index.html.erb
。并在此处将链接指定为 <%= link_to 'contact', :controller => "ads", :action => "contact" %>
“广告”-> 控制器名称。
Rails 无需控制器操作即可处理视图
我还没有测试它是否可以在没有控制器的情况下工作,但没有控制器操作它可以工作。
12 年后,Rails,7。
路线
resources :invoices
发票_controller.rb
before_action :authorize_action
# def index
#
# end
private
def authorize_action
....
end
发票/index.haml
=> 有效!!
但是如果索引被注释掉或没有被注释掉,
authorize_action
方法就会触发。