1

В моем приложении у меня есть таблицы пользователей и действий, и у пользователя три действия.Передача дополнительного параметра по ссылке

У меня есть домашняя страница с тремя кнопками на ней. Если пользователь нажимает кнопку 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 %> 

Независимо от того, какую ссылку я выбираю на главной странице, на экране отображается «Активность сообщества», то есть activity_type всегда кажется равным 3. Я не думаю, что это признает activity_type. Я прохожу через ссылку в домашняя страница.

Есть ли другой способ сделать это, или я делаю это неправильно?

ответ

1

Вы передаете целое число по вашей ссылке (:activity_type => 1), но все отправляется как строка в Rails. Итак, params[:activity_type] - это строка, а не целое число (то есть «1» не 1). Поэтому, когда вы делаете свое заявление case, вы пытаетесь сравнить «1» с 1, 2 или else. А так как "1" != 1 "(или 2) ваш случай всегда будет использовать случай по умолчанию и установить $activity_type_var до 3.

Не использовать глобальные переменные. Переменная экземпляра будет просто отлично.