簡體   English   中英

Ajax表單未呈現部分

[英]Ajax form not rendering partial

我正在嘗試實現關注/取消關注表單來創建/銷毀用戶與站點上的公司之間的關系。 我在呈現表單提交中的新部分時遇到問題,要將關系按鈕從“關注”更改為“取消關注”

目前,我根據是否存在關系來渲染不同的部分:

`<% unless current_user.id == @company.user_id  %>
 <div id="#relationship">
    <% if current_user.following?(@company)  %>
      <%= render :partial => 'unfollow' %>
    <% else  %>
      <%= render :partial =>  'follow' %>
    <% end %>
  </div>
<% end %>`

以下部分看起來像:

<%= form_for(current_user.relationships.build(followed_id: @company.id), remote: true) do |f| %>
  <div><%= f.hidden_field :followed_id %></div>
  <%= f.submit "Follow",class: "btn-transparent btn-hollow btn-huge" %>
<% end %>

雖然取消關注部分看起來像:

<%= form_for(current_user.relationships.find_by(followed_id: @company.id), html: { method: :delete }, remote: true) do |f| %>
  <%= f.submit "Unfollow", class: "btn-transparent btn-hollow  btn-huge" %>
<% end %>

這些在我的Relationships_Controller中使用Create和Destroy方法:

class RelationshipsController < ApplicationController
  before_filter :authenticate_user!

  def create
    @company = Company.find(params[:relationship][:followed_id])
    current_user.follow!(@company)
    respond_to do |format|
      format.html { redirect_to @company }
      format.js {render layout: false}
    end
  end

  def destroy
    @company = Relationship.find(params[:id]).followed
    current_user.unfollow!(@company)
    respond_to do |format|
      format.html { redirect_to @company }
      format.js{render layout: false}
    end
  end
end

如果我將remote設置為false,則窗體將按預期工作,創建並銷毀關系,並且在重新加載頁面時按鈕會更改。 當我嘗試通過設置remote:true來使用AJAX時,將以下代碼用於Relationships / create.js.erb和Relationships / destroy.js.erb

$("#relationship").html("<%= j render('companies/unfollow') %>");

$("#relationship").html("<%= j render('companies/follow') %>");

但是,現在,當我重新加載頁面時-我可以單擊一次按鈕來創建/銷毀關系對象。 如果再次單擊,則會出現500錯誤。 永遠不會加載新的部分。

盡管我有點菜鳥,但出現此錯誤似乎使我指向chrome dev工具中jquery源中的這一行:

xhr.send( ( options.hasContent && options.data ) || null );

我正在使用Rails 4,Jquery-Turbolinks和Devise-如果其中任何一個與問題沒有任何關系。

現在令人沮喪的是,如果有人可以幫助,將不勝感激!

更新

日志輸出如下。 第一個DELETE表示已經渲染了我的局部圖像,但是還沒有。 第二個DELETE是第二次單擊取消關注時發生的事情-它正確地指出,具有該ID號的Relationship不再存在,因為在第一個操作中已將其刪除。

Started DELETE "/relationships/429" for 127.0.0.1 at 2014-10-28 14:34:59 +0000
Processing by RelationshipsController#destroy as JS
  Parameters: {"utf8"=>"✓", "commit"=>"Unfollow", "id"=>"429"}
  [1m[36mUser Load (1.0ms)[0m  [1mSELECT  "users".* FROM "users"  WHERE "users"."id" = 1  ORDER BY "users"."id" ASC LIMIT 1[0m
  [1m[35mRelationship Load (0.4ms)[0m  SELECT  "relationships".* FROM "relationships"  WHERE "relationships"."id" = $1 LIMIT 1  [["id", 429]]
  [1m[36mCompany Load (0.3ms)[0m  [1mSELECT  "companies".* FROM "companies"  WHERE "companies"."id" = $1 LIMIT 1[0m  [["id", 1]]
  [1m[35mRelationship Load (0.3ms)[0m  SELECT  "relationships".* FROM "relationships"  WHERE "relationships"."follower_id" = $1 AND "relationships"."followed_id" = 1 LIMIT 1  [["follower_id", 1]]
  [1m[36m (0.2ms)[0m  [1mBEGIN[0m
  [1m[35mSQL (3.6ms)[0m  DELETE FROM "relationships" WHERE "relationships"."id" = $1  [["id", 429]]
  [1m[36m (0.5ms)[0m  [1mCOMMIT[0m
  Rendered companies/_follow.html.erb (2.5ms)
  Rendered relationships/destroy.js.erb (5.3ms)
Completed 200 OK in 19ms (Views: 7.0ms | ActiveRecord: 6.3ms)


Started DELETE "/relationships/429" for 127.0.0.1 at 2014-10-28 14:35:04 +0000
Processing by RelationshipsController#destroy as JS
  Parameters: {"utf8"=>"✓", "commit"=>"Unfollow", "id"=>"429"}
  [1m[35mUser Load (0.9ms)[0m  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1  ORDER BY "users"."id" ASC LIMIT 1
  [1m[36mRelationship Load (0.3ms)[0m  [1mSELECT  "relationships".* FROM "relationships"  WHERE "relationships"."id" = $1 LIMIT 1[0m  [["id", 429]]
Completed 404 Not Found in 4ms

ActiveRecord::RecordNotFound - Couldn't find Relationship with 'id'=429:

您的ID名稱中包含一個哈希。

嘗試改變

<div id="#relationship">

<div id="relationship">

當使用remote: true您必須更改:

format.js{render layout: false}

format.js

否則:您永遠不會呈現relationships/create.js.erbrelationships/destroy.js.erb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM