如何借助认证逻辑为Ruby on Rails&Devise实现两种link_to跳转目标
可以把路径判断逻辑单独提取,只保留一份link_to代码块来消除重复:
<% target_path = user_signed_in? ? alerts_path : root_path %> <%= link_to target_path, class: "d-flex flex-row navbar-brand", input_html: {data: {bs_toggle: "offcanvas", bs_target: "#offcanvas"}} do %> <%= cl_image_tag("ouicity_logo_j5rhro") %> <h2 id="logo" class="ms-3">ouicity</h2> <% end %>
如果追求更紧凑的写法,也可以直接把判断逻辑嵌入link_to的路径参数里:
<%= link_to user_signed_in? ? alerts_path : root_path, class: "d-flex flex-row navbar-brand", input_html: {data: {bs_toggle: "offcanvas", bs_target: "#offcanvas"}} do %> <%= cl_image_tag("ouicity_logo_j5rhro") %> <h2 id="logo" class="ms-3">ouicity</h2> <% end %>
第一种写法把路径变量单独声明,可读性更强;第二种写法更简洁,适合这种简单的二元判断场景,两种方案都能实现你要的登录前后跳转不同路径的需求。
内容的提问来源于stack exchange,提问作者AmandaBP
相关产品推荐
相关产品推荐

