Javascript Rails—如何在不使用“JS”的情况下将动作呈现为JS:远程=>;真的;?
在视图中,我有一个称为AJAX的链接: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.
= link_to "Show post", post, :remote => true
和控制器中的操作:
def show
respond_to do |format|
format.js
end
end
当我点击这个链接时,请求被称为AJAX,并显示一个包含相应内容的弹出窗口。此外,需要的地址也会添加到URL中(例如web.com/posts/6
)
到目前为止还不错
但现在,当我尝试将其放到URLweb.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'
当我将URLweb.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
,这是我唯一知道的方法。@遗忘形态-我试图弄清楚当我[手动]将一个动作放到URLweb.com/posts/6
时,如何将其呈现为js。如果将该URL放到浏览器中,它将呈现为HTML。但是我试图强迫控制器将这个动作呈现为JS。我想这也行。这取决于你觉得哪个更好看。
= link_to "Show post", post, :remote => true
= link_to "Show post", post, :remote => true, :format => 'js'