Best_in_place gem不保存文本区域内容

时间:2014-03-17 17:40:26

标签: ruby-on-rails ruby-on-rails-4 best-in-place

所以,我不确定为什么,但是当我在文本框中输入一些文本然后刷新页面时,文本没有保存。我正在使用正确的DB字段(描述),所以我不确定出了什么问题。

_photo.html.erb

<%= best_in_place photo, :description, type: :textarea, nil: 'Enter a Caption' %>

照片架构

create_table "photos", force: true do |t|
    t.string   "file"
    t.integer  "attachable_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "attachable_type"
    t.string   "title"
    t.text     "description"
    t.boolean  "profile_photo",   default: false
  end

  add_index "photos", ["attachable_id"], name: "index_photos_on_attachable_id", using: :btree
  add_index "photos", ["attachable_type"], name: "index_photos_on_attachable_type", using: :btree

为什么不保存?

干杯!

更新

show.js

$('.modal-title').html('<%= @photo.title %>');
$('.modal-body').html('<%= j(render "modal_photo", photo: @photo) %>');
$('#myModal').modal();

photos_controller(剪辑):

class PhotosController < ApplicationController
  before_filter :authenticate_user!

  def show
    @photo = current_user.photos.find(params[:id])
  end

2 个答案:

答案 0 :(得分:0)

这里需要保存对象而不是单值属性。

替换它
<%= best_in_place @photo, :description, type: :input %>

请参阅此回答有助于:best_in_place not saving

答案 1 :(得分:0)

我认为您的问题可能出在控制器中:

class PhotosController < ApplicationController
  respond_to :html, :json # Whatever formats you want to respond

  # Other actions...

  def update
    @photo = Photo.find(params[:id])

    respond_to do |format|
      if @photo.update_attributes(params[:photo])
        format.html { # Whatever you want to do... }
        format.json { respond_with_bip(@photo) }
      else
        format.html { # Whatever you want to do... }
        format.json { respond_with_bip(@photo) }
      end
    end
  end

最佳位置提供了一种应该在控制器中使用的实用程序方法,以便使用:json格式提供javascript端所期望的响应。 More info in the gem's README