【问题标题】:How to pass the value of input type radio in application_helper?如何在application_helper中传递输入类型radio的值?
【发布时间】:2019-04-23 09:29:40
【问题描述】:

我正在创建一个管理模板,并且有一个定制器部分,我在其中创建了 3 个单选按钮(名称为:红色、蓝色、绿色)。有一个左侧边栏导航菜单,我想通过单击单选按钮来更改边栏导航菜单的背景颜色。 如果我单击按钮,它会通过添加一个类来更改侧边栏导航菜单的 bg-color,但是如果我要去另一个页面,则会重新加载该类并删除该类。

我已经尝试了一件事,在我的 application_helper.rb 中我添加了以下代码

    def is_active(action)
        @color = "red"
        params[:action] == action_name ? @color : nil                  
      end

在我的布局文件夹中,我有一个部分文件 _sidebar.html.erb 并且在外部 div 中我正在使用如下所示的此帮助程序

    <div class="sidebar-nav <%= is_active('action_name') %>" id="collapse-sidebar"  >

我在这里做的是,检查动作名称是否匹配,然后添加一个红色类,该类存储在实例变量@color中

如果我可以动态地将单选按钮的值传递给 application_helper 文件,则意味着如果我单击红色,则该值应为红色,绿色则该值应为绿色。通过它我可以在应用程序助手中动态更改类名,并进一步改变侧边栏的颜色。

请,如果我做错了什么,或者这不是正确的方法,或者我们无法在 ruby​​ on rails 中实现这种功能,请承认我,这将是可观的。

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    不确定我是否理解您的意思,但实例变量在请求之间会丢失,因此使用 @color 代替 red 毫无意义。

    如果您想坚持 red 处理请求,请将其存储在会话中或作为参数传递。

    【讨论】:

    • 谢谢,它有助于将值存储在会话变量中。
    【解决方案2】:

    我正在稍微重构您的侧边栏代码:

    <div class="sidebar-nav <%= selected_color(params[:action]) %>" id="collapse-sidebar"  >
    

    假设您在 action 参数中传递颜色名称(“红色”、“蓝色”或“绿色”),application_helper.rb 代码将如下所示:

    def selected_color(action_color_name)
      colors = ['Red','Blue', 'Green']
      colors.include? action_color_name ? action_color_name : nil                  
    end
    

    另外,将action 存储在一个隐藏变量中,以便在转到其他页面时颜色将保留。如果这不起作用,只需将sidebar_color 存储在数据库的配置表中,并在单击相应的单选按钮时更新属性。 希望这会有所帮助。

    【讨论】:

    • 感谢您的回复,基本上我想做的主要事情是当我点击任何单选按钮时,按钮的值应该作为参数传递,假设如果我点击红色参数如果绿色,值应该是红色,那么它应该是绿色,在此基础上我想更改类的名称,所以即使我点击任何单选按钮,这也会动态改变侧边栏的颜色,但我不知道如何传递单选按钮的值。
    • 我给你一个链接,打开它,右侧有一个按钮,带有设置图标,它正在旋转,点击它,如果你点击任何一个,就会有一个侧边栏过滤器单选按钮它会改变侧边栏的背景颜色,但它在 vuejs 中,所以如果你转到另一个页面,颜色不会改变。请打开链接,你会明白的。 vuely.theironnetwork.org/default/dashboard/ecommerce
    • 在表单中传递action 变量并在单击单选按钮时提交表单。请参阅此链接,了解如何通过单击单选按钮提交表单:[stackoverflow.com/questions/846526/…
    • 好的,但是在哪里提交表单,到 application_helper.rb ?
    • 首先请告诉我您是否打开了链接并检查了更改侧边栏颜色的功能,真的可以吗?
    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 2013-12-30
    • 1970-01-01
    • 2021-05-20
    • 2015-11-15
    • 2016-11-20
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多