我有一个页面列出了我的事件数据库中的所有事件。我想创建一个按钮,显示“我的事件”按下时重新加载页面,但只显示属于current_user的事件。我尝试过这样的事情:
<%= button_to "My Events", events_path(:my_events => true) %>
然后我要在events_controller索引中添加一个if语句,如果my_events为true,则过滤@events。但是,此按钮只是出于某种原因创建了一个新事件。
有更好的方法吗?
答案 0 :(得分:0)
这将做你想做的事:
在事件控制器中添加动作find_my_events:
find_my_events
@events = current_user.events(:all)
render :action => 'index'
end
现在,在您的视图中,创建一个form_tag并将其与find_my_events关联:
(您可以在routes.rb中创建新路线或使用:controller =&gt;'events',:action =&gt;'find_my_events',我更喜欢前者)
在表单中添加submit_tag。
因此,现在当您提交表单时,页面会刷新并为当前用户提取事件。
您还可以使用布尔隐藏字段向索引操作提交表单。现在在索引操作中检查该布尔字段是否设置为true,如果是,则显示current_user或所有事件的事件。