gpt4 book ai didi

javascript - Rails 3 - 应用程序布局问题

转载 作者:行者123 更新时间:2023-11-28 10:19:20 25 4
gpt4 key购买 nike

我在理解 Rails 的一般应用程序布局时遇到了一些困难。

基本上,我正在制作一个用于足球比赛的网络应用程序。教练登录并进入/coach/index 页面。在该页面上,他们可以使用 JavaScript 前端绘制他们的游戏等。我的问题是,为了保存游戏,我需要将该 JSON 发送到服务器,以将其记录到正确的 Play 数据库条目中。

  1. 我的布局在逻辑上正确吗?例如,登录的教练应该将他带到该页面,然后他在那里绘制比赛并保存它们、创建新比赛、加载它们等,还是我应该在比赛 Controller 控制的页面上执行此操作? p>

  2. 我想将游戏绘图引擎生成的JSON保存到数据库中。执行此操作的最佳方法是什么?我看到的所有 Rails AJAX 教程都基于简单的表单,您可以在其中设置 remote => true 属性等。如何在没有显式表单的情况下向 Rails DB 进行 AJAX POST/GET 并处理输入?

  3. 这可能是因为我缺乏 Rails 专业知识(我正在努力学习),但在您更有经验的观点中,什么是我确保正确发挥的最佳方法向制作它们的教练展示?我在理解 Controller 如何访问其他 Controller 控制的东西方面遇到了一些困难。我确信这种事情一定有一些约定。

我想得越多,我就越觉得登录应该把你带到/plays 目录,我应该修改那里的 create 等,以便做我想做的事情。提前致谢。

最佳答案

  1. 您的布局符合逻辑吗? /coaches 作为登录教练的目的地是有意义的。如果您的应用程序用户只是教练,那么即使是 root 也有意义。当教练登录时,他会进入某种形式的 coaches#show,但这并不意味着您仅仅因为 URL 类似于 /profile 就做错了什么>。并非所有内容都需要在 URL 方面遵守完整的 REST。在现实世界中,操作不会驻留在其自己的小而古怪的页面上。如果在 /coaches 页面上嵌套新的 Play 表单有意义,则您的 URL 不需要反射(reflect)它。

Controller 控制与资源的交互。在 /coaches 页面中,您仍将向 plays#destroy 发送删除比赛请求,并通过 plays#create 验证新比赛,这可以失败时渲染“coachs/index”。

  1. 我从未真正处理过 Rails 中的 AJAX。

  2. 确保教练只看到自己的比赛的最佳方法是通过 Coach has_many :plays 关联来确定他们的范围。 Rails 身份验证解决方案(如 Devise)中的约定是提供一个方法 current_user,该方法返回当前登录用户的 User 模型实例。

您的 coaches#index 操作可能如下所示:

# Coaches controller
def index
@plays = current_user.plays
end

那么你的 View 可能有:

# views/coaches/index.erb
<ul>
<% for play in @plays %>
<li><%= play.name %></li>
<% end %>
</ul>

你不会做的事情:@plays = Play.where(:user_id => @user.id)

它还简化并保护了其他操作。考虑:

@play = current_user.plays.new

@play = current_user.plays.build(:name => "My First Play")
redirect_to @play, :notice => "Success!" if @play.save

current_user.plays.find(params[:id]).destroy

要回答作为评论添加的问题:

# Coaches controller
def new
@play = current_user.plays.new
end

def create
@play = current_user.plays.build(params[:play]) # @play now already contains the association to the coach that created it.
if @play.save!
redirect_to # somewhere
else
render 'coaches/index'
end
end
  • 我强烈推荐Railscasts如果您不熟悉它们。即使观看有关您短期内不会实现的主题的剧集也会给您带来良好的曝光度。
  • 例如,这是 Railscast on Devise 。 Devise 在 Github 上也有不错的文档。 .
  • 我最近购买了 CodeSchool 的类(class) Rals Best Practices 。尽管其中一些内容可能超出您的直接掌握范围,但您可以随时重新访问它。我一直查阅附带的幻灯片来寻找更好的做事方法。

关于javascript - Rails 3 - 应用程序布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com