2

Rails3アプリでjeditableを使用しようとしています。いくつかのフィールドをインラインで編集したいと思います。

私の見解

<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'

誰かがこれを修正する方法についての手がかりを持っていますか?

4

2 に答える 2

2
<script>
jQuery(document).ready(function($) {
   $(".edit_textfield").each( function() {    
      $(this).editable('<%=@studet.id%>', {
            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を編集したところ、動作し始めました:)

于 2013-01-14T09:24:24.293 に答える
0

jeditable の最初の引数 (この場合は「更新」) は、投稿先の URL です。Rails のデフォルトでは、レコードを更新するために「show」URL (つまり、students/19) に投稿する必要があります。また、エラー メッセージから、あなたが単一のリソース ページ ("myapp/students") にアクセスしているため、"myapp/students/update" に投稿していると推測できます。

すでにレコード表示ページにいる場合は、現在のウィンドウの場所に投稿すると修正されます。インデックス ページを表示している場合は、投稿先のレコードを特定するために、JavaScript を少し記述する必要があります。

于 2013-01-11T15:51:51.287 に答える