如何将 selected_tab 传递给控制器​​操作?

How to pass a selected_tab to a controller action?

我有一个主选项卡 'Category'。此选项卡还有两个选项卡 'question' 和 'answer'。我创建了 CategoryController,其中定义了两个名称为 'question' 和 'answer' 的操作。我有一个私有方法 category_type,它应该根据选择的选项卡('question' 或 'answer')采用 category_type。此方法将在控制器的操作中调用。我在视图中创建了这些选项卡,还添加了路由。如何将视图中选择的选项卡传递给此方法?

我已经为这些选项卡创建了部分内容并将其呈现在主页面上。

_tabs.html.haml


#secondary-slider.pills-容器
  %跨度
    = link_to 'Questions', question_category_path, class: @selected_tab[:问题]
  %跨度
    = link_to 'Answers', answer_category_path, class: @selected_tab[:answer]

控制器的操作:


  定义问题
    @selected_tab = { category_type => :selected }
  结尾

  别名:问题:答案

  私人的

  定义 category_type
    @category_type = :问题
  结尾

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

如何实现?我想传递 'params()' 但无法弄清楚括号中应该传递什么。

提前致谢。

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

question_category_path(category: 'question')

answer_category_path

也是如此

并访问选择的类型,作为params[:category]