Rails - 如何在不使用“:remote => true”的情况下将动作呈现为 JS

Rails - how to render an action as JS without using ":remote => true"?

本文关键字:情况下 true JS remote Rails      更新时间:2023-09-26

视图中,我有一个链接,我称之为AJAX:

= link_to "Show post", post, :remote => true

和控制器中的操作:

  def show
    respond_to do |format|
      format.js
    end
  end

当我单击此链接时,请求被称为 AJAX,并显示一个包含相应内容的弹出窗口。此外,所需的地址将添加到 URL 中(例如 web.com/posts/6 )。

目前为止,一切都好。

但是现在当我尝试放入 URL web.com/posts/6 时,我只收到一条错误消息:

Processing by PostsController#show as HTML
  Parameters: {"id"=>"6"}
  Post Load (0.6ms)  SELECT  `posts`.* FROM `posts`  WHERE `posts`.`id` = 6 LIMIT 1
Completed 406 Not Acceptable in 535ms
ActionController::UnknownFormat (ActionController::UnknownFormat):
  app/controllers/posts_controller.rb:14:in `show'

当我将 URL web.com/posts/6放入浏览器时,我正在尝试实现这一目标,然后页面的呈现方式将与我单击带有 :remote => true 选项的链接相同。

怎么做?如何强制控制器中的动作渲染为 JS?

谢谢。

使用此链接(基本上只需将格式.js添加到末尾):

web.com/posts/6.js

这也适用于您想要的任何其他类型的格式(例如 jsonxml )。只需确保在控制器操作中考虑这些格式即可。

替换

= link_to "Show post", post, :remote => true

= link_to "Show post", post, :remote => true, :format => 'js'

警告

@user984621是对的:与JS链接非常奇怪。