【问题标题】:Can't edit records using best-in-place gem for Rails 3.0无法使用 Rails 3.0 的最佳就地 gem 编辑记录
【发布时间】:2013-01-21 15:22:35
【问题描述】:

我正在尝试让best-in-place gem 在 Rails 3.0 应用程序上工作,但似乎没有任何效果。我无法单击任何对象来编辑它们。

这是我到目前为止所做的(按照上面链接中的 GitHub 说明以及RailsCast:

在我的Gemfile

gem 'rails', '3.0.11'
gem 'best_in_place', '~> 0.2.0'

我还运行了rails g best_in_place:setup,因为我使用的是 3.0,它生成了一个 best_in_place.js 文件到 public/javascripts

最后显示要就地编辑的记录:

<div class="profileGains">"<%= best_in_place @project, :my_quote %>"</div>

我正在使用 RESTful 路由,因此我的项目资源有 update 操作。

此时,记录已显示,但我无法单击它(或任何其他记录)。

有什么建议吗?我是 JS 新手,真的很卡。

编辑:我创建了一个application.js 文件,在其中添加了以下代码:

//= require jquery
//= require jquery.purr
//= require best_in_place

$(document).ready(function() {
  /* Activating Best In Place */
  jQuery(".best_in_place").best_in_place();
});

我还尝试了 Richlewis 在 cmets 中的建议,在我的视图中添加脚本标签:

<script type="text/javascript" src="/public/javascripts/best_in_place.js"></script>

最后,我尝试将&lt;%= javascript_include_tag :defaults %&gt; 更改为 &lt;%= javascript_include_tag :all %&gt; 在我的 application.html.erb 布局文件中。

再一次,最佳位置不起作用。

更新:使用 Chrome 检查元素时,我发现日志中显示了此错误:

Uncaught TypeError: Object [object Object] has no method 'best_in_place' 
application.js line 7

知道这意味着什么吗?

【问题讨论】:

  • 我假设您在 application.js 中需要 Jquery,我会将 best_in_place.js 放在资产管道中而不是公开
  • 这个应用程序没有资产管道,因为它运行的是 Rails 3.0。此外,没有 application.js 文件;我想添加一个,但我到底要放什么?另外,我确实有一个 jQuery.js 文件。由于没有资产管道,我需要在我的应用程序布局文件中使用 jQuery 吗?
  • 抱歉,虽然 3.0 有资产管道,但我的错误,我猜你需要从应用程序/布局文件中调用 JS,即
  • 不用担心。所以我尝试了一些东西,包括你的建议,但似乎没有任何效果。项目字段已显示,但我无法单击进行编辑。我编辑了这篇文章以包含这些额外的步骤。
  • 也许不太理想,但你能升级到 rails 3.2.11 吗?然后将启用资产管道,您可以在编辑 gemfile 后捆绑更新轨道

标签: javascript ruby-on-rails ruby-on-rails-3 gem best-in-place


【解决方案1】:

在我想出来的时候回答我自己的问题。 best_in_place.js 文件未在我的视图中呈现,因为此代码 //= require best_in_place 仅适用于具有资产管道的应用程序。

我必须在我的应用程序布局文件中明确声明best_in_place.js 文件。成功了。

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2016-07-28
    • 2017-10-17
    相关资源
    最近更新 更多