【问题标题】:Processing a request that depends on two clicks in Sinatra在 Sinatra 中处理依赖于两次单击的请求
【发布时间】:2012-02-29 06:53:42
【问题描述】:

我正在使用 Sinatra 将我的跳棋游戏引擎(内置于 Ruby)扩展到网络。

我需要点击两次(往返方格)来构建完整的移动并返回正确的棋盘状态。我已经得到它来渲染正方形,每个看起来像:

<td id=<%= "A3" class= "open-square"><a href="/gameplay/A3></a></td> 

如果为空并且

<td id=<%= "A3" class= "open-square"><a href="/gameplay/A3><img checker></a></td>

如果被占用(我已经去掉了 ERB,因为它在这里无关紧要)

我的路线如下所示:

get '/gameplay/:location' do
    erb :gameplay
end

它在捕获单个点击方面做得很好,但我需要两次。我从Tom Anderson 那里得到了一个很好的建议:

跳棋有 64 个方格,每个方格处于三种状态之一,所以 - 不使用 cookie - 您可以在浏览器上使用 javascript 创建您的状态 - 64 个字符,例如 'br_bb___...' 黑色、红色和空白,然后将 64 个字符的字符串与 点击方块。然后服务器发回一个新的状态, 本地js用来显示方块。

但我认为这只有在我可以一键完成移动时才有效,但我做不到。我是这个东西的新手,显然很天真,无论你有什么建议都会受到赞赏。

【问题讨论】:

  • 我认为最好的方法是先用javascript“预处理”这两次点击,然后在此基础上进行AJAX调用。如果它们作为不同的请求进入,则无法将服务器端的两次点击关联起来。

标签: javascript ruby session sinatra


【解决方案1】:

我最终没有使用 JQuery 来注册点击。我基本上创建了一个查询字符串来注册点击的位置,并使用服务器端编程来确定何时执行移动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2021-11-09
    相关资源
    最近更新 更多