Ruby w/ Sinatra:能给我一个 jQuery AJAX 请求的示例吗?

2024-03-22

%a{:href => "/new_game?human_is_first=true", :remote => "true"}
            %span Yes

上面是我的链接。只是想知道如何处理这个问题。我需要能够执行一些 JavaScript。下面是我使用 Rails 时的 .js.erb 文件。

$('.welcome_container').fadeOut(500, function(){
  $( '.shell' ).html( "<%= escape_javascript( render( :partial => "board/board" ) ) %>" );
  $('.board_container').fadeIn(500);
});

所以,我的问题是,一旦在 app.rb 中调用 /new_game,我希望能够将一些 javascript 发送到当前页面(无需离开页面,并渲染部分内容)


See 我对你最近提出的另一个问题的回答 https://stackoverflow.com/questions/4857374/ruby-w-sinatra-what-is-the-equivalent-of-a-js-erb-from-rails/4857587#4857587用于在生产 Sinatra 应用程序中发送和接收 HTML 部分内容的全面设置。

由于 Sinatra 是一个很好的轻量级框架,因此您可以自由(被迫?)提出自己的工作流程和代码来实现部分和处理此类调用。您可以选择定义一个基于正则表达式的路由,而不是我的显式每个部分路由,该路由根据传递的 URL 或参数查找正确的数据。

一般来说,如果你想让Sinatra响应一条路径,你需要添加一条路由。所以:

get "/new_game" do
  # This block should return a string, either directly,
  # by calling haml(:foo), erb(:foo), or such to render a template,
  # or perhaps by calling ...to_json on some object.
end

如果您想返回没有布局的部分并且您正在使用视图,请务必通过layout:false作为助手的一个选项。例如:

get "/new_game" do
  # Will render views/new_game.erb to a string
  erb :new_game, :layout => false
end

如果你想返回 JSON 响应,你应该设置适当的标头数据:

get "/new_game" do
  content_type :json
  { :foo => "bar" }.to_json
end

如果您确实想从处理程序返回原始 JavaScript 代码,然后执行它......那么,以下是返回 JS 的方法:

get "/new_game" do
  content_type 'text/javascript'
  # Turns views/new_game.erb into a string
  erb :new_game, :layout => false
end

由您决定是否收到 JS 和 *不寒而栗*eval() it.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby w/ Sinatra:能给我一个 jQuery AJAX 请求的示例吗? 的相关文章

随机推荐