在评估表中有一个提交按钮和一个<%= f.submit :private %>
按钮。如果单击私人提交,提交的信息将对查看个人资料的其他用户隐藏。
我们如何还可以<%= f.submit :private %>
用来隐藏提交的信息,使其不显示在提要上?
活动/index.html.erb
<h1>Feed</h1>
<% @activities.each do |activity| %>
<% if current_user == @user %>
<%= render_activity activity %>
<% else %>
<%= render_activity activity %> #We'd need to make .public_valuations work with this without getting an undefined method error.
<% end %>
<% end %>
活动控制器.rb
class ActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.following_ids, owner_type: "User")
end
end
为简洁起见,我将只包括_create
(还有update
and destroy
)。每次用户提交估价时,它都会在提要中弹出,我们如何才能只public_valuations
显示?
public_activity/valuation/_create.html.erb
<% if activity.trackable %>
<%= link_to activity.trackable.name, activity.trackable %></b>
<% else %>
which has since been removed
<% end %>
估值.rb
class Valuation < ActiveRecord::Base
belongs_to :user
acts_as_taggable
validates :name, presence: true
has_many :comments, as: :commentable
include PublicActivity::Model
tracked owner: ->(controller, model) { controller && controller.current_user }
def public?
private == true ? false : true
end
scope :randomize, -> do
order('RANDOM()').
take(1)
end
end
users_controller
def show
if
@valuations = @user.valuations
else
@valuations = @user.public_valuations
end
end
用户.rb
#gets public valutations or nil, if there's no public valutation
def public_valuations
valuations.find(&:public?)
end
我从这个 railscasts 剧集中获得了几乎所有的活动代码:http ://railscasts.com/episodes/406-public-activity 。
这就是我们如何使个人资料的私人提交工作: 如何使用私人提交来隐藏个人资料?
非常感谢您的参与!
更新
由于我们无法通过 public_activity gem 解决这个问题,我从头开始创建了公共活动,并试图在这里解决这个问题: 如何进行私人活动?