我正在使用bootstrap& rails并拥有一个用户模型并发布模型。用户创建帖子(集合)..
在导航栏中使用bootstrap我希望用户能够单击显示其帖子名称的下拉列表..我在一个控制器上使用私有方法和before_action执行此操作但我不想这样做对于所有控制器,它不适用于应用程序控制器......
有更好的方法吗?
我这样做
def list
@user = User.find_by_username(params[:id])
@collections = @user.collections
end
和
before_action :list
位于控制器的顶部
实现这一目标的最具语义的方法是什么?
答案 0 :(得分:2)
如果您可以将两者都移动到应用程序控制器,那么任何控制器都可以使用它。更一般地说,我不确定这是否是解决问题的最佳方法。
这些提示可能也很有用。
current_user
帮手。这样您就可以简单地执行@collections = current_user.collections
def fetch_list_collections
可能是更好的名称,或者不是传递名为id
的参数,也许您的参数应该命名为username
。这些命名约定对于那些可能会看到你的代码的人以及你自己回到它并试图记住你在N个月前所写的内容的人来说都变得非常重要。nil
,您尝试在collections
上调用nil
方法时出错。 花时间学习这些东西。您不必一次学习所有内容,但我认为上述内容可能会有所帮助。
答案 1 :(得分:0)
我在应用程序控制器中使用它
before_action :list
private
def list
@collections = current_user.collections
end
感谢@arieljuod