我正在使用full_calendar来根据用户ID显示事件。
我有一个home索引,用于呈现_form.html.erb事件,并在此处创建事件。
当我将日历移至事件/索引时,我尝试仅显示基于user_id的事件。
但是,当前有用户ID(1〜3),但是仅显示用户ID(1)的事件。其余用户ID创建的事件存储在数据库中,但在日历中不可见。
我只想根据日历中的用户ID显示事件。
家庭控制器
def index
@event = Event.new
@events = Event.order("RANDOM()").first(1)
end
index.html.erb(家庭控制器)
<%= render partial: 'events/form', locals: { event: @event } %>
_form.html.erb(事件控制器)
<%= simple_form_for(@event) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<div class="form-inputs">
<%= f.input :title %>
<%= f.input :description %>
<%= f.input :color %>
<%= f.input :start_time %>
<%= f.input :end_time %>
<%= f.hidden_field :user_id, :value => @event.user_id %>
<%= f.hidden_field :user_email, :value => @event.user_email %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
index.html.erb(事件控制器)
<div class="row">
<div class="col-lg-12">
<section class="panel">
<div class="panel-body">
<div id="calendar"></div>
</div>
</section>
</div>
</div>
<% @events.each do |x| %>
<% if(x.user_id == current_user.id) %>
<script type='text/javascript' src='jquery-1.8.1.min.js'></script>
<script>
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
events: '/events.json'
});
</script>
<% else %>
<script type='text/javascript' src='jquery-1.8.1.min.js'></script>
<script>
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
});
</script>
<% end %>
<% end %>
答案 0 :(得分:2)
您的事件模型中可能包含以下行:
class Event < ApplicationRecord
belongs_to :user
以及用户模型中的反映:
class User < ApplicationRecord
has_many :events
有了这些关系,您只需在控制器中执行以下操作即可:
@events = current_user.events
因为current_user
返回一个User
实例,并且当您在User模型中定义has_many :events
时,Rails在User上创建了这个events
实例方法。
答案 1 :(得分:0)
我不完全理解您的问题,但是如果您只想显示某个特定用户的帖子,最简单的方法是在模型中使用范围,并从控制器中调用它:
模型范围
class Calendar
scope :by_user, -> (user) { where(user:user) }
end
并在您的控制器中使用它:
def index
@calendars = Calendar.by_user(current_user)
end
这只会获取用户= current_user的结果