%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中调用Once / new_game,我希望能够将一些javascript发送到当前页面(不离开页面,并进行部分渲染)
答案 0 :(得分:8)
有关在生产Sinatra应用中发送和接收HTML部分的全面设置,请参阅my answer to your other recent question。
由于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()
它。