Ruby on rails 用于在登录时在模板结构中使用页面的命令

Ruby on rails 用于在登录时在模板结构中使用页面的命令,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我必须使用ruby来构建与api的交互,这已经很顺利了。但现在,我们正在努力使模板的布局正确。页面、页眉、页脚、侧菜单和内容的每个部分都在一个单独的rhtml文件中。但在某些情况下,如果用户登录,我要求侧菜单页面不同。有没有办法做到这一点?根据您的身份验证解决方案,您可以检查以下内容: <% if @current_user %> ... Render menu type 1 <% else %> ... Render menu type 2 <% end

我必须使用ruby来构建与api的交互,这已经很顺利了。但现在,我们正在努力使模板的布局正确。页面、页眉、页脚、侧菜单和内容的每个部分都在一个单独的rhtml文件中。但在某些情况下,如果用户登录,我要求侧菜单页面不同。有没有办法做到这一点?

根据您的身份验证解决方案,您可以检查以下内容:

<% if @current_user %>
  ... Render menu type 1
<% else %>
  ... Render menu type 2
<% end %>

... 渲染菜单类型1
... 渲染菜单类型2

通过这种方式,您可以检查是否有当前用户登录到您的应用程序中,并执行查看逻辑以显示不同类型的菜单。

我同意MurifoX的观点,您应该确保每个不同的菜单都作为一个部分呈现,以保持代码干净和简单

以下是我的application.html.haml中的内容(我使用haml):


ruby新手。。。视图逻辑?我可以不做一个简单的render menu1.rhtmland吗这将作为一个php等价的-----语句工作,但使用if和else?您不需要文件扩展名吗?不,我不需要文件扩展名。这是嵌入Ruby代码的HAML语法(请参阅)。这与MurifoX编写的基本相同,但两个不同的菜单移动到了不同的文件(“/layouts/\u signed\u in\u menue.html.haml”和“/layouts/\u menu.html.haml”)。渲染视图时会包含这些文件。
render
语法负责在视图中包含文件,并将查找要渲染的适当文件(不考虑文件扩展名)。我不知道PHP的等价物。。。
- if user_signed_in?
  = render :partial => "layouts/signed_in_menu"
- else
  = render :partial => "layouts/menu"