【问题标题】:Backbone With Rails带导轨的主干
【发布时间】:2013-01-23 12:23:55
【问题描述】:

我从服务中获取数据,然后将数据设置为我的 bean 对象,并希望在我的视图中使用相同的数据,现在在 rails 视图中以表单形式显示它。现在我想使用主干验证这个表单。

我是 Rails 和 Backbone 的新手。

请告诉我如何进行此操作。

【问题讨论】:

  • 我的主干视图将如何识别在 DOM 中识别表单的 tagName 和 id 属性?

标签: ruby-on-rails ruby-on-rails-3 backbone.js backbone-views


【解决方案1】:

我认为您可能对 Web 应用程序的工作方式感到困惑。 Backbone 是一个客户端端的框架;它使用在您的用户浏览器中运行的 Javascript 代码。 Rails 是一个服务器 端的框架;它使用在您的服务器上运行的 Ruby 代码。

鉴于所有这些,根据定义,您的 Backbone 代码和 Rails 代码必须完全分开。两者只能通过两种方式进行交流:

1) 您的 Rails 代码可以将 <script> 标记写入页面(在 .html.erb 文件中)并将变量数据放在那里;例如:

<script>
var myVarFromRails = '<%= someRailsVariable %>';
</script>

当它从服务器返回时(即当您查看页面的源代码时)将被转换为:

<script>
var myVarFromRails = 'foo';
</script>

(假设 'foo' 是 someRailsVariable 的值)。

2) 您的 Javacript 代码可以向 Rails URL 发出 AJAX 请求,Rails 代码输出的任何内容都将作为对您的 AJAX 请求的响应返回。换句话说,你可以这样做:

 $.ajax({url: someRailsUrl, complete: function(response) {
      // whatever the server sent back will be inside the "response" variable
 }});

除此之外,这两者几乎完全分开,如果您想在两者中做同样的事情(例如验证表单),您基本上必须编写两次代码,一次用于 Ruby,一次用于 Javascript .

我说“基本上”是因为 Rails 插件以不同的方式为您执行 #1 和 #2。我不是 Rails 专家,即使我是这样的插件太多了,您也确实需要自己寻找以找出存在的内容以及对您的代码库有意义的内容。

希望对您有所帮助。

* 编辑 *

我知道我只是说过我不会列出库,但后来我意识到如果我至少提供一些帮助您入门会更有帮助。只是不要把这些当作经典;目前它们只是一些流行的库,但它们可能适合也可能不适合您。

  1. https://github.com/codebrew/backbone-rails
  2. https://github.com/meleyal/backbone-on-rails
  3. https://github.com/aflatter/backbone-rails
  4. https://learn.thoughtbot.com/products/1-backbone-js-on-rails
  5. http://kiranb.scripts.mit.edu/backbone-slides/

最后两个实际上不是图书馆,它们是一本书/演示文稿,但我认为它们可能有用。

【讨论】:

  • P.S.如果您没有感到困惑,并且您实际上只是在问“我如何在 Backbone 中验证表单?”,基本的答案是您使用 Backbone.View 来包装表单,并为其添加逻辑以设置该表单的Backbone.Model 中的数据。然后在该模型上定义一个验证方法,向其中添加验证逻辑,一切就绪。如果您想将该表单数据发送到服务器,您需要做的就是调用model.save()(假设您已经在该模型中定义了一个 url)。
  • 感谢您的回答...我对此并不感到困惑,我已经执行了所有指定的操作..但是我对如何在浏览器上显示消息感到困惑..我正在检查验证器的 isValid 方法,现在只能显示警报..
  • 我仍然难以理解您的问题:“我正在检查验证器的 isValid 方法,现在只能显示警报”甚至不是语法句子,更不用说完整的解释您正在尝试做的事情以及对此不起作用的事情。如果您需要 Stack Overflow 的帮助,如果您详细说明(最好是通过编辑您的问题)并花时间进行清晰的沟通,您将获得更大的成功。
猜你喜欢
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多