Попробуй реализовать пост фаворита на моем приложении - PullRequest
0 голосов
/ 05 июля 2018

Я новичок на рельсах, работаю над приложением и пытаюсь реализовать favis для поста пользователей, я использую это tuto , у меня нет ошибки, но она не работает :

show.html.erb:

<h1><%= @post.user.fname %> <%= @post.user.lname %>, <%= @post.user.age %> ans</h1>
<h2>Coach d'<%= @post.user.mother_tongue %></h2>
 <p><%= @post.user.spoken_languages.map(&:name).sort.join(", ") %></p>
 <p><%= @post.price %>€ / jour</p><br>

 <p> <%= @post.user.fname %> en quelques mots :<br>
     <%= @post.content %></p>

 <p>HEBERGEMENT :<br>
  <%= @post_attachments.build %></p>

 <%= link_to "Contacter #{@post.user.fname}", '#' %><br><br>

 <%= render partial: 'hearts/button', locals: { post: @post } %><br><br>

 <% if @current_user == @post.user %>
   <%= link_to "Editer", edit_post_path(@post) %>
   <%= link_to "Supprimer", @post, method: :delete, data: { confirm: "Êtes-vous sûr?" }%>
 <% end %>

_button.html.erb:

<% if current_user.heart?(@post) %>
  <%= link_to "Unheart", unheart_path(post_id: @post.id), remote: true, method: :delete  %>
<% else %>
  <%= link_to "Heart", heart_path(post_id: @post.id), remote: true  %>
<% end %>

hearts_controller.rb:

class HeartsController < ApplicationController

  respond_to :js

  def heart
    @user = current_user
    @post = Post.find(params[:post_id])
    @user.heart!(@post)
  end

  def unheart
    @user = current_user
    @heart = @user.hearts.find_by_post_id(params[:post_id])
    @post = Post.find(params[:post_id])
    @heart.destroy!
  end
end

heart.rb:

class Heart < ApplicationRecord
  belongs_to :post
  belongs_to :user

  validates :user_id, uniqueness: { scope: :post_id }
end

post.rb:

  has_many :hearts, dependent: :destroy
  has_many :users, through: :hearts

user.rb:

  has_many :hearts, dependent: :destroy
  has_many :posts, through: :hearts

Заранее спасибо за помощь

heart.js.erb:

$('div#<%= dom_id(@post) %>').html('<%= j render partial: "button", locals: {post: @post} %>');

unheart.js.erb:

$('div#<%= dom_id(@post) %>').html('<%= j render partial: "button", locals: {post: @post} %>');

Ошибка:

ActionController::RoutingError (undefined method `respond_to' for HeartsController:Class
Did you mean?  respond_to?):

1 Ответ

0 голосов
/ 05 июля 2018

Я только что заметил, что вы использовали remote: true для своих кнопок в _button.html.erb . Это заставляет действие быть выполненным ajax. Это означает, что вы ничего не увидите после нажатия на кнопку. Проверьте журналы вашего сервера, чтобы убедиться, что запрос действительно получен.

Чтобы обработать ответ на ваш удаленный запрос, вам понадобится JavaScript. Или просто удалите флаг удаленного доступа.

Дополнительная информация: guides.rubyonrails.org / working_with_javascript_in_rails.html # remote-elements

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...