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

时间:2019-01-30 12:11:18

标签: ruby-on-rails haml

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

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

_tabs.html.haml


#secondary-slider.pills-container
  %span
    = link_to 'Questions', question_category_path, class: @selected_tab[:question]
  %span
    = link_to 'Answers',  answer_category_path, class: @selected_tab[:answer]

控制器的动作:


  def question
    @selected_tab = { category_type => :selected }
  end

  alias :question :answer

  private

  def category_type
    @category_type = :question
  end

我希望从视图中传递参数,而不是像上面给定的那样通过:question:answer传递category_type,即如果选择了question标签,则应该将@category_typequestion一起传递,否则,如果选择了answer标签,则应在category_type中传递。

如何实现?我曾想过要传递'params()',但无法弄清楚括号中应传递的内容。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

question_category_path(category: 'question')

类似,answer_category_path

并以params[:category]的身份访问选择的类型