在我的应用程序中,我有用户和活动表,用户有三个活动。
我有一个主页,上面有三个按钮。如果用户按下按钮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
方法中我有:
class ActivitiesController < ApplicationController
def index
@activities = Activity.all
@activity_type = params[:activity_type]
case @activity_type
when 1
$activity_type_var = 1
when 2
$activity_type_var = 2
else
$activity_type_var = 3
end
end
我在我的活动/ index.html.erb中有这个:
<% if $activity_type_var == 1 %>
<%= "Personal Activity" %>
<% elsif $activity_type_var == 2 %>
<%= "Physical Activity" %>
<% elsif $activity_type_var == 3 %>
<%= "Community Activity" %>
<% else %>
<%= "NOT WORKING" %>
<% end %>
无论我从主页选择什么链接,&#34;社区活动&#34;显示在视图上,意味着activity_type
似乎总是为3.我不认为它正在识别activity_type
我正在通过主页中的链接。
有不同的方法可以做到这一点,还是我做错了?
答案 0 :(得分:1)
您在链接中传递了一个整数(:activity_type => 1
),但所有内容都以字符串形式发送到Rails中。所以params[:activity_type]
是一个字符串,而不是整数(即。&#34; 1&#34;不是1)。因此,当您执行case
声明时,您正试图比较&#34; 1&#34;到1,2或else
。自"1" != 1
&#34; (或2)你的情况总是使用默认情况并将$activity_type_var
设置为3。
不要使用全局变量。一个实例变量就可以了。