Ruby w / Sinatra:我可以举一个jQuery AJAX请求的例子吗?

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

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

 $('.welcome_container').fadeOut(500, function(){ $( '.shell' ).html( " "board/board" ) ) %>" ); $('.board_container').fadeIn(500); }); 

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

有关在生产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和* shudder * eval()它。