3

我按照 Ryan Bates 对最佳就地宝石的railscast进行了操作,但无法使其正常工作。我在 user.rb 模型中设置 before_create 的默认值显示在页面上,但我无法单击它进行编辑;它只是显示为静态元素。虽然,Firebug 显示 best_in_place javascript 正在视图中加载<head>

应用程序.js

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require jquery-ui
//= require jquery.purr
//= require best_in_place
//= require_tree .

users.js.coffee

jQuery ->
  $('.best_in_place').best_in_place()

用户.rb

attr_accessible :email, :name, :password, :password_confirmation, :avatar, :goal
...
before_create :default_values
...
  private

    def default_values
      self.goal ||= "Write Current Goal Here"
    end

users_controller.rb

respond_to :html, :json
...
  def update
    @user = User.find(params[:id])
    respond_to do |format|
      if @user.update_attributes(params[:user])
        format.html {
          flash[:success] = "Profile updated"
          sign_in @user
          redirect_to @user
        }
        format.json { respond_with_bip(@user) }
      else
        format.html { render 'edit' }
        format.json { respond_with_bip(@user) }
      end
    end
  end

用户/show.html.erb

...
<%= best_in_place @user, :goal %>
4

3 回答 3

2

在你的 layouts/application.html.erb .. 而不是javascript_include_tag(:all)

javascript_include_tag(:application) 

另外,请确保users.js.coffee住在app/assets/javascript

编辑

确保您已安装 Gemfile 和捆绑包中指定的 gem

gem "best_in_place"

试试这个,就像 Said Kaldybaev 建议的那样

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require jquery-ui
//= require jquery.purr
//= require_tree .
//= require best_in_place

然后代替咖啡在页面顶部执行此操作:

$(document).ready(function() {
  $('.best_in_place').best_in_place();
})

如果这不起作用,请删除//= require best_in_place然后//= require jquery.purr运行

rails g best_in_place:setup
于 2012-07-17T15:42:23.360 回答
1

我也有同样的问题,通过将require best_in_place移动到 require 列表的末尾来解决

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require jquery-ui
//= require jquery.purr
//= require_tree .
//= require best_in_place
于 2012-07-17T16:03:01.477 回答
1

这对我有用:

改变

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

$(document).ready(function() {
于 2012-08-16T16:44:22.913 回答