【问题标题】:How to pass a selected_tab to a controller action?如何将 selected_tab 传递给控制器​​操作?
【发布时间】:2019-01-30 12:11:18
【问题描述】:

我有一个主标签“类别”。此选项卡还有两个选项卡,分别是“问题”和“答案”。我创建了CategoryController,我在其中定义了两个名为“问题”和“答案”的操作。我有一个私有方法category_type,它应该根据选择的选项卡(“问题”或“答案”)采用 category_type 。此方法将在控制器的操作中调用。我在视图中创建了这些选项卡,还添加了路线。如何将从视图中选择的选项卡传递给该方法?

我为这些选项卡创建了一个部分,并将其呈现在主页上。

_tabs.html.haml

#secondary-slider.pills-container %跨度 = link_to '问题',question_category_path,类:@selected_tab[:question] %跨度 = link_to 'Answers',answer_category_path,类:@selected_tab[:answer]

控制器的动作:

定义问题 @selected_tab = { category_type => :selected } 结尾 别名:问题:答案 私人的 def 类别类型 @category_type = :问题 结尾

而不是像上面给出的:question:answer那样传递category_type,我想从视图中传递参数,即如果选择了question选项卡,则@category_type应该与question一起传递,否则如果@ 987654329@选项卡被选中,应该传入category_type

如何做到这一点?我想过传递'params()',但不知道应该在括号中传递什么。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby haml


    【解决方案1】:

    您可以通过question_category_path 传递视图中的类别类型,如下所示,

    question_category_path(category: 'question')
    

    answer_category_path 类似

    并访问选择了哪种类型,在行动中params[:category]

    【讨论】:

    • 我这样做了,但是当我在category_type 变量中传递参数时,它给出了nil is not a symbol nor a string. for category_type 的错误
    • 使用 params[:category] || 'question' 而不是 params[:category] 用于初始目的。因为要选择的初始选项卡是question,并且在参数中没有类别键的情况下调用了操作。
    猜你喜欢
    • 2018-12-27
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多