Я пытаюсь реализовать форму follow/unfollow для создания/уничтожения отношений между пользователем и компанией на сайте. У меня возникли проблемы рендеринга новый частичный по форме представить, чтобы изменить кнопку отношения с «следовать» в «неследовать»Ajax форма не оказывает частичное
В настоящее время я сделать другое частичное в зависимости от того, или нет, уже существует взаимосвязь:
`<% 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:
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
Если установить удаленный: ложь, форма работы, как и ожидалось, создавая и разрушая отношения, и изменения на странице перезагрузки. Когда я пытаюсь использовать AJAX, установив пульт: верно, и использовать этот код для отношений/create.js.erb и отношения/destroy.js.erb
$("#relationship").html("<%= j render('companies/unfollow') %>");
$("#relationship").html("<%= j render('companies/follow') %>");
Однако, теперь, когда я перезарядить мою страницу - я можно щелкнуть по кнопке один раз, чтобы создать/уничтожить объект отношений. Если я снова нажму, я получу 500 ошибок. Новая часть никогда не загружается.
Хотя я немного нуб, эта ошибка, кажется, указывает мне на этой линии в источнике Jquery в хромовых Дев инструментов:
xhr.send((options.hasContent && options.data) || null);
Я использую Rails 4, Jquery-Turbolinks и Devise - если какой-либо из них будет иметь какое-либо отношение к проблеме.
Невероятно расстроенный сейчас, если кто-то может помочь в этом, будем очень признательны!
Обновление
Выход журнала ниже. Первый DELETE говорит, что он оказал мне частичное, но это не так. Второй DELETE - это то, что происходит при повторном нажатии на повторную запись во второй раз - он справедливо указывает, что связь с этим номером идентификатора больше не существует, поскольку она была удалена при первом действии.
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:
приятно видеть вас утешать журнал для этой ошибки –
я не знаю, если это он, но, похоже, у вас есть дополнительные скобки в '$ (" # relationship "). html (" <% = j (render ('companies/follow')%> ");'. Журнал консоли также будет отличным, если это не проблема. – nikkon226
удален в скобках, и он все еще не работает - он застрял там, пока я много чего пытался. Обновлен с выходом журнала. – user3834416