【问题标题】:Rails - passing extra parameters through a linkRails - 通过链接传递额外参数
【发布时间】:2016-05-09 00:07:28
【问题描述】:

我的应用程序中有两个表。用户表和活动 - 用户有许多活动(确切地说,总共 3 个)。

我有一个主页,上面有 3 个按钮。如果用户按下按钮 1,我想导航到活动索引页面并将属性 activity_type 设置为 = 1。如果用户按下按钮 2,我想导航到活动索引页面并将 activity_type 设置为 = 2 等等。现在我有:

<%= link_to 'Personal Activity', user_activities_path(:user_id => current_user.id, :activity_type => 1) %>
<%= link_to 'Physical Activity', user_activities_path(:user_id => current_user.id, :activity_type => 2) %>
<%= link_to 'Community Activity', user_activities_path(:user_id => current_user.id, :activity_type => 3) %>

在我的活动/index.html.erb 文件中,我想要三个条件:

If the activity_type = 1 for current_user
  Do X
Elsif the activity_type = 2 for current_user
  Do Y
Else
  Do X
End

它似乎无法识别我在链接中包含的 activity_type 参数。我该怎么做?

【问题讨论】:

  • 您是如何尝试获取 activity_type 的?喜欢params[:activity_type]?
  • 现在我的索引视图中有这个: 。我不确定从哪里获取 activity_type 或在哪里使用 params[:activity_type]?
  • 这些链接是否导航到索引页面?如果是这样params[:activity_type] 应该可以工作

标签: ruby-on-rails ruby if-statement hyperlink conditional


【解决方案1】:

如果这些链接确实将您带到index 页面,那么您可以使用params[:activity_type] 访问activity_type。另外我建议你把逻辑放在controller#action

def index
  @activity_type = params[:activity_type]

  case @activity_type
  when 1
    #your logic
  when 2
    #your logic
  when 3
    #your logic
  else
    #some code
  end
end

【讨论】:

    【解决方案2】:

    这些参数被附加到 params 中,您可以像这样访问它们:

    activity_type = params[:activity_type]
    

    或者只是这样:

    if params[:activity_type] == 1
      Do something
    else
      Do something
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-18
      • 2015-04-04
      • 1970-01-01
      相关资源
      最近更新 更多