0

在我的控制器中有许多检查,如下所示:

if @profile.expired
  redirect_to profile_path(@profile.id)
  return
end

是否可以将其重构为单行?

Also if using this code it redirects to /profiles.28 

其中 28 是 id 如何正确重定向到

/profiles/show/28 or profiles/28 ?
4

2 回答 2

2

这很可能是您需要的:

redirect_to(profile_path(@profile.id)) if @profile.expired

您几乎从不(几乎从不,我的意思是实际上从不)return在控制器代码中需要语句。如果你真的因为某种原因需要这个,你可以这样做

redirect_to(profile_path(@profile.id)) && return if @profile.expired

至于您的其他问题,我猜您在路线中错误地指定了某些内容,如果您发布它们,我很乐意更正它们。

于 2013-10-14T17:37:11.877 回答
0

我不完全清楚您想要实现的目标,但根据我的最佳猜测,您可以在一行中完成,如下所示:

(@profile.expired) ? (redirect_to profile_path(@profile.id) and return) : 'do something else'
于 2013-10-14T17:22:05.110 回答