2

我已经阅读了文档,每次都让我感到困惑,只是因为它没有回答一些基本的事情。我意识到类方法::respond_to(通常在控制器顶部使用)的主要目的是与respond_with. 而实例方法的目的#respond_to(通常在每个动作的最后)是为不同的格式提供不同的响应。

我也知道可以将实例方法版本合并为看起来像类方法,但为了简洁起见,在动作内部使用,如下所示respond_to(:html):用例是 的另一个目的#respond_to,即拒绝未指定格式的请求。(我认为它会引发 UnspecifiedFormat 异常)

类方法是否也具有相同的功能?例如,如果我有一个响应 html 的控制器,如果我只是放在respond_to(:html)文件的顶部,我可以期望它拒绝其他格式的请求吗?我在这样做时遇到了问题,所以我不知道我是否做错了什么,或者在这方面它是否不应该与实例方法一样工作。

4

1 回答 1

1

所以我终于做了一个实验,不,类方法respond_to不会像实例方法那样拒绝对未指定格式的请求。有点令人困惑的差异,但你有它。如果您想拒绝无效格式的请求(使用 406),您必须在每个控制器的每个操作中指定有效格式(使用实例方法respond_to

于 2014-04-14T22:13:50.797 回答