2013-01-11 86 views
1

我正在尝试在我的rails 3应用程序中使用jeditable。我想编辑一些内联字段。jEditable in Rails 3

我的观点

<script> 
    jQuery(document).ready(function($) { 

$(".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') } 
     }); 
}); 
}); 
</script> 

<p id="notice"><%= notice %></p> 

<p> 
    <b><%=t :Name%>:</b> 
    <dd class="edit_textfield" id="<%= @student.id %>" name="name"><%= @student.name %></dd> 
</p> 

<p> 
    <b><%=t :Age%>:</b> 
    <dd class="edit_textfield" id="<%= @student.id %>" name="age"><%= @student.age %></dd> 
</p> 

<p> 
    <b><%=t :Address%>:</b> 
    <dd class="edit_textfield" id="<%= @student.id %>" name="address"><%= @student.address %></dd> 
</p> 

<p> 
    <b><%=t :Phone%>:</b> 
    <dd class="edit_textfield" id="<%= @student.id %>" name="phone"><%= @student.phone %></dd> 
</p> 

我的控制器:

def update 
    @student = Student.find(params[:id]) 
    @student.name = params[:value] 
    @student.age = params[:value] 
    @student.address = params[:value] 
    @student.phone = params[:value] 
    @student.save 
    respond_to do |format| 
     if @student.update_attributes(params[:student]) 
     format.html { redirect_to @student, :notice => 'Student was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render :action => "edit" } 
     format.json { render :json => @student.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

错误

Processing by StudentsController#update as HTML 
    Parameters: {"id"=>"update", "value"=>"Sreekesh O S", "name"=>"name"} 
WARNING: Can't verify CSRF token authenticity 
    Student Load (1.6ms) SELECT `students`.* FROM `students` WHERE `students`.`id` = 0 LIMIT 1 
Completed 500 Internal Server Error in 6ms 

ActiveRecord::RecordNotFound (Couldn't find Student with id=update): 
    app/controllers/students_controller.rb:59:in `update' 

有没有人对如何解决这一线索?

回答

2
<script> 
jQuery(document).ready(function($) { 
    $(".edit_textfield").each(function() {  
     $(this).editable('<%[email protected]%>', { 
      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') } 
     }); 
    }); 
}); 
</script> 

我编辑这样的JavaScript和它开始工作:)

0

jeditable的第一个参数(在你的情况下,“更新”)是它发布到的URL。默认情况下,您需要在“显示”网址(即学生/ 19)上张贴以更新记录。我还会从错误消息中猜测,您是在单独的资源页面(“myapp/students”)上,因此它会发布到“myapp/students/update”。

如果您已经在记录显示页面上,则发布到当前窗口位置应该可以修复它。如果你在索引页面上,你需要编写一些JavaScript来确定你应该发布哪条记录。