2016-11-18 66 views
0

我有一个使用User模型的Rails 4应用程序,它的has_one :client其中Client是我存储客户端信息的模型。我希望我的用户能够使用他们的客户端信息查看配置文件页面,但我不确定要使用哪个操作或如何路由到它。Rails 4:用户配置文件

我希望能够使用show操作来查看特定的客户端:

def show 
    @user = User.find(params[:id]) 
    @client = @user.client 
end 

...但我也想为“我的个人资料”,这将依赖于current_user并没有找到用户的路线由他们的ID。在我看来,这也是一个表演动作,我试图避免添加自定义的方法,而宁愿找到“有条不紊”的方式来做到这一点。

def show 
    @user = current_user 
    @client = @user.client 
end 

我知道这是一种哲学,但如果有人能解释正确的方式来实现这一点,我将不胜感激。

+0

以及铁轨的方式是创建一个ClientsController用show方法 - 你可以删除任何不必要的操作,如索引等....或者只是在你的用户控制器中创建一个show_client操作,如果它的一次性操作相关给客户 - 这样做没有错。最好不要使用UsersController#show,因为它会混淆它的意图 - 这应该会显示给用户。 – David

+0

完全同意,谢谢! –

回答

0

其实,我不确定你在做什么。如果您想添加关于显示current_user个人资料的特定页面。为什么不添加新的method

喜欢这个

def profile 
    @client = current_user.client 
end 

或者你可以验证params[:id]show行动

喜欢这个

def show 
    @user = params[:id].present? ? User.find(params[:id]) : current_user 
    @client = @user.client 
end 
+0

我想因为我的应用程序随着时间的推移变得有点混乱,我试图遵守Rails惯例,并且我的理解是坚持使用标准方法是最干净的方法,但也许一些额外的方法很好 –

+0

如果您真的想要遵循Rails的方式,你可以阅读http://jeromedalbert.com/how-dhh-organizes-his-rails-controllers/ –

+0

好的阅读,谢谢! –