1

では、標準の To Do リスト アプリケーションとほぼ同じ、アイテム アプリを使用した非常に単純なリストを作成します。belongs_to :listリスト ( pointと list )内の新しい「ポイント」の作成を ajax 化することができましたがhas_many :points、「破棄」アクションに問題があります。

Error: Syntax error, unrecognized expression: /lists/10/points/125ブラウザーで破棄リンクをクリックしても、何も表示されず、リストとポイントの ID に応じて異なる値で明らかにエラーが発生します。

ページを更新するかデータベースを見ると、エントリが実際に削除されていることが明らかです。ajax がなければ、私の破棄アクションは問題なく機能します。明らかな何かが欠けているように感じます。何かアイデアはありますか?

ちなみに、「pro」属性は、すべてのポイントに関連付けられた単なるブール値です。

points_controller.rb

def destroy 
  @point = @list.points.find(params[:id])
  @point.destroy
  respond_to do |format|
    format.html { redirect_to list_url(@list) }
    format.js
  end
end

リスト/show.html.erb

 <% @list.points.each do |point| %>
      <% if point.pro == true and point.valid? == true %>
        <li class="weight-<%= point.weight %>"><%= point.content %>
          <%= link_to "&times;".html_safe, [@list, point],  
                  :remote => true,
                  :method => :delete, 
                  :class=> "close", 
                  :data => {:dismiss => 'alert'} %>
    </li>

そして、コードが実行されていないように見えるため、views/points/destroy.js.erbに何を入れても問題ないようです。

アップデート

私はそれを理解しました。削除リンクのパスを に変更する必要がありましたlist_point_url(@list, point)。もう 1 つの問題は、無効な JavaScript がサーバー エラーを引き起こしていたため、何が問題なのかわかりませんでした (#<%= dom_id(@point) %>引用符で囲む必要があることがわかりました)。

皆さんありがとう!

4

1 に答える 1

0

実際には削除ルートのようには見えないdestroyため、削除リンクがコントローラーアクションにルーティングされているかどうかを確認してください。list_point_path


編集

知識の湖で申し訳ありませんが[@list, point]、ルートとして何が生成されるかわかりません。これは、参考までに、私自身の見解として持っているものです。

link_to "Delete", admin_photo_path(photo), :method => :delete, :confirm => "Delete this image?", :class => "btn-trash"

Myは、単一のインスタンスadmin_photo_pathにルーティングする単一のパスです。Photoコレクションではありません。

編集

簡単な方法は、削除をポイント オブジェクトに送信することです。

link_to "&times;".html_safe, point,  
              :remote => true,
              :method => :delete, 
              :class=> "close", 
              :data => {:dismiss => 'alert'}
于 2012-12-24T02:18:54.640 に答える