0

こんにちは、AJAX と JQuery を使用してテーブル内にデータを表示しようとしています。私のコードでわかるように、部分的なフォームを使用してデータを取得し (これはうまく機能します)、保存ボタンをクリックすると、データページ全体を更新せずに表示されますが、テーブル内に表示する方法と jquery UI スライド効果がわかりません。申し訳ありませんが、レールは初めてで、Web 開発にはさらに悪いです:D

私のコードをお見せしましょう。

create.js.erb

$('#new_location').remove();
$('#new_link').show();
$('#allsites').prepend('<%= escape_javascript(render(@location)).html_safe %>');

_location.html.erb 部分ファイル

  <tr>
    <td><%= location.name %></td>
    <td><%= location.address%></td>
    <td><%= link_to 'Show', location %></td>
    <td><%= link_to 'Edit', edit_location_path(location) %></td>
    <td><%= link_to 'Destroy', location, method: :delete, data: { confirm: 'Are you sure?' } %></td>   
  </tr>

Index.html.erb

<div class="hero-unit">
  <%= gmaps4rails(@json) %>
</div>


<%= link_to 'New Location', new_location_path, id:"new_link", remote: true%>
<table class="table table-hover">  
  <tr>
    <th>Name</th>
    <th>Address</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>
   <div id="allsites"><%= render @locations%></div>   
</table>

new.js.erb

$('#new_link').hide().after('<%= j render("form") %>');

location_controller.rb

class LocationsController < ApplicationController

  def index
    @locations = Location.all
    @json = Location.all.to_gmaps4rails 
  end 

  def new
    @location = Location.new
  end

  def edit
    @location = Location.find(params[:id])
  end

  def create
    #@location = Location.new(params[:location])
    @location = Location.create(params[:location])
     respond_to do |format|
        format.html { redirect_to @location, notice: 'Location was successfully created.' }
        format.js   
    end
  end

def show
    @location = Location.find(params[:id])
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @location }
    end
  end
  def update
    @location = Location.find(params[:id])

    respond_to do |format|
      if @location.update_attributes(params[:location])
        format.html { redirect_to @location, notice: 'Location was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @location.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @location = Location.find(params[:id])
    @location.destroy

    respond_to do |format|
      format.html { redirect_to locations_url }
      format.json { head :no_content }
    end
  end
end

シークレットショット ajax でわかるように、データを取得して置換していますが、表示方法はまだわかりません。

新しいレコードの追加 新しいレコードが保存され、すぐに表示されます Chrome のデバッグ ツール

4

3 に答える 3

1

replaceWith セレクターに id "#" があります。"#" を削除して $('table.table tbody') を再試行するか、id="allsites" を tbody に割り当てて、jquery セレクターを最初の投稿と同じにしてください。

于 2013-07-13T09:56:23.713 に答える
0

おかげさまで、数日前にレールでコレクションを使用する例を見たので、create_js.erb ファイルでこの行を使用し、index.html.erb ファイル に$('table.table tbody').prepend('<%= escape_javascript(render(:partial => "location", :locals => { :location => @location } )) %>');この行を追加してパーシャルをレンダリングしました。<%= render :partial => 'locations/location', :collection => @locations %>誰かが私にこれを説明してくれるなら、ええ、それは私の問題を解決しますが、もう少し学ぶ方が良いでしょう. 何がコピーされているかを知らずにコピーして貼り付けることは、良い習慣ではありません

于 2013-07-15T13:21:20.887 に答える