在编辑操作中没有response_to阻止(通过脚手架生成)?
时间:2020-03-06 14:32:31 来源:igfitidea点击:
有谁知道为什么没有用于生成的" edit"动作的" respond_to"块?典型的脚手架控制器中的所有其他动作都有一个" respond_to"块,以便输出" html"和" xml"格式。为什么" edit"动作是一个例外?
我正在使用最新版本的Ruby on Rails(2.1.1)。
解决方案
因为只会从HTML调用编辑操作
无需在XML上下文中返回编辑表单。
使用REST,我们只需直接进行一次put调用即可更新相关信息。
Rails处理99%的情况:我们几乎不需要在Edit操作中进行任何XML或者JSON转换,因为在视觉上,Edit操作与Show操作非常相似。想要在应用程序中更新模型的非可视客户端可以通过这种方式调用控制器
GET /my_models/[:id].xml (Show)
然后,客户端应用可以进行任何转换或者编辑,并将结果发布(或者放置)到
PUT /my_models/[:id].xml (Update)
当我们调用此命令时,通常会这样做是为了获得Show操作的可编辑形式:
GET /my_models/[:id]/edit
它是供人类使用的。就是说,有99%的时间。由于在Edit操作中转换数据是不寻常的,因此Rails假定我们不打算这样做,并通过将response_to放在支架之外来DRY修改代码。
有点相关。有人可能会奇怪,为什么新动作的铁轨脚手架仍然有一个response_to块?而编辑操作则不行。这是因为对以下内容的请求:
GET /my_models/new.xml
...返回一个可用于创建新模型的XML模板。