如何为此通知创建局部视图

时间:2019-03-27 22:24:36

标签: ruby-on-rails ruby

我已经设置了一个通知,用于当用户在书上发表评论时,book.user会在以下部分得到通知:views / notifications / _book.html.erb。同时,我试图在用户关注的用户发布新书时向用户的关注者创建通知。 IMO,应该创建一本书的一部分以呈现通知视图,但是我已经有这本书的一部分副本来显示评论通知。现在我不知道我是否仍可以在同一文件中进行调整或创建其他文件。我正在使用https://github.com/rails-engine/notifications

根据本教程https://www.devwalks.com/lets-build-instagram-with-ruby-on-rails-part-6-follow-all-the-people/

,我实现了以下关系,这些关系在我的应用程序上运行良好

这是我到目前为止对代码所做的

user.rb

  has_many :books, dependent: :destroy
  has_many :chapters, dependent: :destroy
  has_many :reviews, dependent: :destroy
  has_many :genres
  has_many :ratings

review.rb

belongs_to :book
belongs_to :user

after_commit :create_notifications, on: :create

private

def create_notifications
    Notification.create do |notification|
       notification.notify_type = 'book'
       notification.actor = self.user
       notification.user = self.book.user
       notification.target = self
       notification.second_target = self.book
    end
end

views / notifications / _book.html.erb

<div class=''>
  <%= link_to notification.actor.username, main_app.profile_path(notification.actor.username) %> reviewed
  <%= link_to notification.second_target.title, main_app.book_path(notification.second_target) %>
</div>

<div class=''>
  <% unless notification.target.blank? %>
    <div class="review-rating" data-score="<%= notification.target.rating %>"></div>
    <%= notification.target.comment %>
  <% end %>
</div>

book.rb

belongs_to :user
has_many :chapters, dependent: :destroy

after_commit :create_notifications, on: :create

    def create_notifications
        self.user.followers.each do |follower|
          Notification.create(notify_type: 'book', 
                              actor: self.user,
                              user: follower, 
                              target: self, 
                              second_target: self.book)

        end
    end

因此,如果必须渲染相同的局部图像,应该怎么办?还是我必须另辟way径?

1 个答案:

答案 0 :(得分:0)

经过大量研究,我知道必须创建一个notify_type部分,该部分还必须与本书的notify_type相对应。

即我创建了

notify_type: "new_book"

partial ='_new_book.html.erb'的名称