Javascript Rails—如何在不使用“JS”的情况下将动作呈现为JS:远程=>;真的;?

Javascript Rails—如何在不使用“JS”的情况下将动作呈现为JS:远程=>;真的;?,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,在视图中,我有一个称为AJAX的链接: = link_to "Show post", post, :remote => true 和控制器中的操作: def show respond_to do |format| format.js end end 当我点击这个链接时,请求被称为AJAX,并显示一个包含相应内容的弹出窗口。此外,需要的地址也会添加到URL中(例如web.com/posts/6) 到目前为止还不错 但现在,当我尝试将其放到URLweb.

在视图中,我有一个称为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
):

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

替换

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

警告


@user984621是对的:这是一个非常奇怪的与js的链接。

嗯,老实说,这不是一个非常友好的方法与
.js共享链接。最后,我同意它看起来不漂亮,但我认为它是最友好的。据我所知,这是唯一的一个。也许你可以用另一种方法调整控制器,但我不确定。谢谢你Ryan的输入,我一直在搜索,如果发现有用的东西,我会发布。奇怪,是的,但没有问题。这个答案并没有改变任何东西,因为JavaScript会自动在任何带有
remote:true
的东西上添加
js
格式。我想他想要一种方法,允许(来自浏览器的)直接链接的格式为
js
,这是我唯一知道的方法。@遗忘形态-我试图弄清楚当我[手动]将一个动作放到URL
web.com/posts/6
时,如何将其呈现为js。如果将该URL放到浏览器中,它将呈现为HTML。但是我试图强迫控制器将这个动作呈现为JS。我想这也行。这取决于你觉得哪个更好看。
= link_to "Show post", post, :remote => true
= link_to "Show post", post, :remote => true, :format => 'js'