【发布时间】:2013-12-06 23:03:33
【问题描述】:
我为特定操作定义了路线并创建了一个链接。我也创建了相应的视图,但没有代码定义控制器操作方法。单击链接时仍会呈现视图。也就是说,视图是在实际不存在操作的情况下呈现的。
有什么解释吗?
【问题讨论】:
标签: ruby-on-rails render
我为特定操作定义了路线并创建了一个链接。我也创建了相应的视图,但没有代码定义控制器操作方法。单击链接时仍会呈现视图。也就是说,视图是在实际不存在操作的情况下呈现的。
有什么解释吗?
【问题讨论】:
标签: ruby-on-rails render
是的,即使没有相应的操作存在,视图也会被渲染,它会像为相同的定义路由一样工作。但这不是一个好习惯!
【讨论】:
为了让 Rails 呈现视图,您需要定义一个控制器(不一定具有相应的方法),一个引用视图和视图的路由。仅当您需要向视图提供数据时,才需要向控制器添加方法。
【讨论】:
Rails 不希望您为 config/routes.rb 文件中的每个路由定义控制器操作。您可能知道您可以定义一个操作,也可以像这样将其留空:
class PostsController < ApplicationController
def index
end
end
对于任何 Web 应用程序,保持这种状态是不寻常的,因为实例变量、数据库事务等的代码最终会填充您的大部分控制器操作。对于纯静态页面,动作仍应定义但应为空。
【讨论】:
即使您为该操作定义了过滤器,它也会执行,无论您是否定义了该操作,正如 Glen 通过他的链接提到的那样,rails 会自动呈现与文件夹内的操作同名的视图,名为 that控制器(位于视图文件夹中)。
空动作相当于没有动作,但规定是出于某些原因(如可理解和可维护性)定义动作。
参考:这里link 说
请注意,上面示例中的空方法可以正常工作 因为 Rails 默认会渲染 new.html.erb 视图,除非 行动另有说明
因此定义了明确的 HTTP 响应,以防您必须更改默认响应。
【讨论】: