2010-07-28 35 views
5

Tôi đang cố gắng sử dụng có thể chỉnh sửa với đường ray 3 ứng dụng của mình. Tôi muốn chỉnh sửa một số trường nội tuyến. Thực ra nó đang hoạt động ở phía khách hàng của tôi nhưng dữ liệu không được cập nhật trong ứng dụng của tôi.jeditable and rails 3

Bạn có thể xem qua không? Cảm ơn trước!

quan điểm của tôi:

<dt>Overview :</dt> 
<dd class="edit_textfield" id="<%= @project.id %>" name="overview"><%= @project.overview %></dd> 

điều khiển của tôi:

def update 
    project = Project.find(params[:id]) 
    overview = params[:value] 
    project.save 
    render :text => params[:value] 
    end 

application.js tôi:

$(".edit_textfield").each(function() {  
     $(this).editable('update', { 
      type : 'textarea', 
      cancel : 'Cancel', 
      submit : 'OK', 
      indicator : 'Saving...', 
      tooltip : 'Click to edit...', 
      rows  :  10, 
      method  :  "put", 
      submitdata : {id: $(this).attr('id'), name:$(this).attr('name') } 
     }); 
}); 

Nhờ kschaper, nó hoạt động.

Nhưng khi tôi sử dụng jeditable cho 2 trường trong trang của mình và tôi chỉnh sửa chúng, chỉ một mục được lưu. Rails tin rằng giá trị thứ hai là 0

Tôi nghĩ rằng vấn đề xuất phát từ điều khiển của tôi:

def update 
    @project = Project.find(params[:id]) 
    @project.name = params[:name] 
    @project.overview = params[:overview] 
    @project.save 
    respond_to do |format| 
     format.js #{ render :text => params[:value] } 

    end 
    end 

Bạn có một đầu mối?

+1

Hoàn toàn không liên quan, nhưng có thể chỉnh sửa là một tên tuyệt vời;) – Nubsis

Trả lời

2

tổng quan là một thuộc tính của dự án? Sau đó, nó phải là

@project.overview = params[:value] 
+0

Cảm ơn nó hoạt động !!!! Nó rất cơ bản ...: oP – Fabien

0

Tôi nghiên cứu đường ray không lâu, nhưng tôi nghĩ sản phẩm cần '@'.

Như thế này:

def update 
    @project = Project.find(params[:id]) 
    overview = params[:value] 
    @project.save 
    render :text => params[:value] 
end 

Có lẽ ...

+0

Cảm ơn mưa, nhưng nó vẫn như cũ ;-) – Fabien

0

FYI - Thuộc tính ID phải bắt đầu bằng một chữ cái. Những gì bạn có trong chế độ xem của mình sẽ không vượt qua xác thực. Bạn sẽ cần phải thêm trước nó với một số văn bản trong các mẫu của bạn và sau đó loại bỏ nó ra trong application.js của bạn trước khi gửi nó cùng trong dữ liệu gửi.