2015-09-21 28 views
3

我无法将gem best_in_place添加到我的表中。Datatables + JSON + best_in_place

class_datatable.rb:

def data 
    class.map do |record| 
     [ 
     best_in_place(record, :name), 
     best_in_place(record, :short_name) 
     ] 
    end 
    end 

有一个错误:NoMethodError(未定义的方法`best_in_place”的ClassDatatable:0xa9283a44)

我的宝石的文件: 源 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.4' 
# Use sqlite3 as the database for Active Record 
gem 'ruby-oci8' 
gem 'activerecord-oracle_enhanced-adapter' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.1.0' 
# See https://github.com/rails/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

# Use jquery as the JavaScript library 
gem 'jquery-rails' 
gem 'jquery-turbolinks' 
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.0' 
# bundle exec rake doc:rails generates the API under doc/api. 
gem 'sdoc', '~> 0.4.0', group: :doc 

# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# Use Unicorn as the app server 
# gem 'unicorn' 

# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 

#---------------------------------My gems-------------------------------------------------------- 
#Twitter Bootstrap 
gem "therubyracer" 
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS 
gem "twitter-bootstrap-rails" 
gem 'client_side_validations' 

#Datatables 
gem 'jquery-datatables-rails', '~> 1.12.2' 
gem 'font-awesome-rails'   # Icons 
gem 'foundation-rails'   # zurb foundation 

#Best in place 
gem 'best_in_place' 

#Russian langue 
gem 'russian', '~> 0.6.0' 

#Jquery UI 
gem 'jquery-ui-rails' 

#Paginate 
gem 'will_paginate' 

#-----------------------------------end--------------------------------------------------------- 
group :development, :test do 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
    gem 'byebug' 
end 

group :development do 
    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'web-console', '~> 2.0' 

    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 
    gem 'spring' 
end 

捆绑安装完成!

如果我做这样的网页上:

<% Class.all.each do |record| %> 
    <%= best_in_place(record, :name) %> 
<% end %> 

工程。 但是,该方法不起作用“def数据”

+1

你需要显示gemfile –

+0

你做过“捆绑安装”吗? – Dusht

+0

正如我在appliction.js行中所说// // require best_in_place – Alexander

回答

0

了解! 有必要在文件class_datatable.rb

0

的开头添加委托best_in_place部分对于任何人苦苦寻找委派正确的方式,这是它是如何做:

class MyCustomDatatable < AjaxDatatablesRails::Base 
    # either define them one-by-one 
    def_delegator :@view, :link_to 
    def_delegator :@view, :h 
    def_delegator :@view, :mail_to 

    # or define them in one pass 
    def_delegators :@view, :link_to, :h, :mailto, :edit_resource_path, :other_method 

    # now, you'll have these methods available to be used anywhere 
    # example: mapping the 2d jsonified array returned. 
    def data 
    records.map do |record| 
     [ 
     link_to(record.fname, edit_resource_path(record)), 
     mail_to(record.email), 
     # other attributes 
     ] 
    end 
    end 
end 

来源:https://github.com/antillas21/ajax-datatables-rails#using-view-helpers