ruby-on-rails – 是否可以在运行时加载Rails助手?
发布时间:2020-12-17 02:10:31 所属栏目:百科 来源:网络整理
导读:根据特定用户选择的“模式”,我的视图可能会有很大差异. 我以为我会将不同的行为提取到两个不同的Helper中,然后在Controller中有这样的代码: class MyController ApplicationControllercase modewhen 'mode1' helper "mode1"when 'mode2' helper "mode2"els
根据特定用户选择的“模式”,我的视图可能会有很大差异.
我以为我会将不同的行为提取到两个不同的Helper中,然后在Controller中有这样的代码: class MyController < ApplicationController case mode when 'mode1' helper "mode1" when 'mode2' helper "mode2" else raise "Invalid mode" end etc... 加载正确的帮助程序后,会出现类似<%= edit_item%>的语句.,在两个助手中定义,将为特定的“模式”加载正确的形式. 这在开发中非常有效,但在生产中,case语句只运行一次.然后你就会被第一次加载的任何助手困住(Duh!我应该知道的.) 我已经想到了其他方法来实现我需要做的事情,但我仍然认为使用Helpers是改变View行为的一种很好的干净方法. 有谁知道我如何在运行时加载(或重新加载)一个助手? TIA:约翰 解决方法
我可以想到几种方法来做到这一点,但不确定如你所建议的那样加载模块.
加载不同的部分并根据状态选择要加载的部分. <% if @mode = 'mode1 %> Mode 1: <%= render :partial => 'mode1' %> <% else %> Mode 2: <%= render :partial => 'mode2' %> <% end %> 或者,如果您想将该逻辑保留在视图之外(这可能是一件好事),您可以在控制器中放置一些内容,以根据模式呈现不同的操作: def index @mode = params[:query] case @mode when 'mode1' then render :action => "mode1" when 'mode2' then render :action => "mode2" else raise "Invalid mode" end end 这似乎比在视图中放置该逻辑要好得多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 单一职责之ImageLoader(一)
- move logback.xml for packaging an executable
- c# – ASP.NET动态地将列添加到Gridview
- postgresql 取下一个自动插入的序列号值
- saiku 3.8 二次开发报错之Could not start repo
- React native:我的windows环境
- c – 如何在XCode之外的OS X上正确设置googleTes
- android – 日期/时间选择器颤振:OK / CANCEL按
- ruby – SAVON是否支持客户端证书身份验证
- 如何在ruby-on-rails应用程序的顶部设置带有dBpe
热点阅读