Rails мигает по запросу ajax (без перезагрузки) - PullRequest
0 голосов
/ 28 марта 2019

Я создаю своего рода клон Facebook, и одним из требований проекта является возможность "лайкать" сообщения.

Мне нравится, (я также использую devise fwiw для аутентификации пользователя). Но когда я пытаюсь прошить, что пользователю уже понравился пост (так как вы не можете понравиться более одного раза), ничего не происходит.

Код моего контроллера:

 def like
    post = Post.find(params[:post_id])
    puts post
    like = post.likes.new(user_id: current_user.id)
    if like.save
      #nothing for now
    else
      flash.now[:alert] = "You have already liked that post"
    end
  end

Работает, находясь на «домашней странице» пользователей, просматривая все их сообщения и имея опцию «Мне нравится» на каждом из них. (Лайк работает, но решил, что стоит отметить).

Если я просто сделаю flash, это будет работать, если я обновлю страницу, но сейчас ничего не происходит.

Ссылка «Мне нравится» выглядит следующим образом:

<% @posts.each do |post| %>
<p>
  <%= post.content %>
</p>
<%= link_to "Like", like_path(@user, post_id: post), remote: true, method: :post %>
<% end %>

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

В рельсах есть один драгоценный камень для флеш-сообщений вызова ajax Тостер самоцвет

Создать один метод в application_helper.rb

def custom_bootstrap_flash
  flash_messages = []
  flash.each do |type, message|
    type = 'success' if type == 'notice'
    type = 'error'   if type == 'alert'
    text = "
      <script>
        $(function () {
          toastr.#{type}(\"#{message}\");
        });
      </script>
    "
    flash_messages << text.html_safe if message
  end
  flash_messages.join("\n").html_safe
end

Включить его в свой макет application.html.erb

<%= custom_bootstrap_flash %>

А в вашем action.js.erb показать тостовое сообщение, используя тостер

toastr.success('Success.')
toastr.error('error')

Надеюсь, это то, что вы ищете.

1 голос
/ 28 марта 2019

Метод flash на рельсах отображается только при успешном перенаправлении.Если вы хотите показать сообщение на той же странице, было бы лучше показать сообщение с помощью JS.

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