Rails - как бы вы начали кодировать действие / представление индекса, как профиль пользователя при переполнении стека? - PullRequest
0 голосов
/ 13 апреля 2010

Я решил снова открыть это, потому что я хочу, чтобы здесь было больше мнений людей по этому поводу. Я не ищу полный код, а скорее ваш подход.

Профиль пользователя Stackoverflows (индекс пользователя) довольно сложный, он имеет около 7 вкладок, каждая из которых отображает данные по-своему. Похоже, что они представляют собой мини-представления, каждый из которых использует различную частичку для табличных данных. Я все еще относительно новичок в рельсах и знаю, как использовать партиалы, но не могу понять, как они в одиночку могут решить эту проблему.

Мне также интересно, как избежать использования огромного оператора if else в главном представлении индекса для определения того, какую вкладку / мини-представление следует отображать. Для stackoverflow это будет около 7 операторов case.

КОНЕЦ РЕДАКТИРОВАНИЯ.

следует оригинальный вопрос.

В stackoverflow в области профиля пользователя есть много вкладок, на которых отображается разная информация, такая как задаваемые вопросы и графики. Это тот же самый вид, и я задаюсь вопросом, как лучше всего добиться этого в рельсах, сохраняя при этом контроллер скиновым и логичным в представлении к минимуму.

def index
        @user = current_user
        case params[:tab_selected]
            when "questions"
               @data = @user.questions
            when "answers"
                @sentences = @user.answers
            else
                @sentences = @user.questions
        end
        respond_to do |format|
            format.html # index.html.erb
         nd
    end

но как мне обработать это в представлении индекса без загрузки операторов if и else. И если вопросы и ответы представлены по-разному, что лучший способ сделать это.

1 Ответ

2 голосов
/ 13 апреля 2010

Создайте две части: _questions.html.erb и _answers.html.erb. Вызвать партиалы на основе tab_selected.

index.html.erb

<%= render :partial => (params[:tab_selected] == "answers") ? "answers" : 
                       "questions") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...