В Rails 3 возможно или уместно вызывать @variable из другой модели в представлении? - PullRequest
0 голосов
/ 16 марта 2012

Здесь я столкнулся с проблемой ... Я создаю домашнюю страницу веб-сайта и пытаюсь интегрировать информацию о пользователях, сообщениях, location_infos bla bla bla на одну и ту же страницу (используя jquery и ajax) ...

В PHP или JSP, я думаю, что такую ​​страницу довольно легко сделать (разделить все эти функции на разные сервисы и создать домашнюю страницу для их загрузки), но в Rails 3 я обнаружил, что на самом деле я могу отображать только @user напосмотрите, является ли модель 'User' и только @user_group, если модель 'User_group' ...

Хорошо, я использую 'has_many, assign_to, has_one', чтобы организовать некоторые из этих моделей.(чтобы я мог использовать такие переменные, как user.user_groups.each) Но на самом деле всегда есть что-то совершенно иное, что я считаю неправильным утверждать, что эти две модели имеют связь, например, между местоположениями и пользователями ... Так что в этомобстоятельства, как я мог ссылаться на переменные из других моделей на определенной странице просмотра?Или это очень вредно, чего мне действительно следует избегать, чтобы я не мог серьезно нарушить стиль страниц RESTFul?

Ну вот мои коды:

Class UsersController< ApplicationController
def home
  if session[:current_user_id]==nil
    redirect_to :action=> "login"
  else
      @user =User.find(session[:current_user_id])

      respond_to do |format|
        format.html
        format.json {render json: @user}
      end
    end
  end
end

, поэтому в users / home.html.erb

Я мог бы использовать коды типа @user.XXX для генерации контента

Но если я переписываю метод, как показано ниже:

  def home
    if session[:current_user_id]==nil
      redirect_to :action=> "login"
    else

      #here \\\
      @user_2=User.find(session[:current_user_id])

      respond_to do |format|
        format.html
        format.json {render json: @user}
      end
    end
  end

Я обнаружил, что невозможно вызвать @ user_2 в users / home.html.erb

И если я добавлюподробнее о UsersController:

@user_group=User_group.find (session [: current_user_id])

Я обнаружил, что не могу просто отобразить @user_group как format.html {render @user_group} И я также не могу получить@user_group в users / home.html.erb

1 Ответ

0 голосов
/ 16 марта 2012

Я не совсем понимаю, о чем вы спрашиваете, но я думаю, что, возможно, вы хотите отправить больше, чем просто @user для просмотра. Вы хотите отправить @user_group, @user_location и т. Д. Это правильно? Если это так, то вам не нужно использовать оператор render в качестве формата для использования переменных модели в ваших представлениях, просто определите их такими, какие вы есть.

Если это вопрос получения отношения, вы можете получить такие, как User.locations или User.groups. Они вернут список местоположений и групп ваших пользователей (соответственно), если ваши модели настроены правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...