Rails 3 link_to частичное с for внутри цикла - PullRequest
1 голос
/ 23 октября 2011

Я никогда не программировал раньше, и мне трудно заставить link_to отобразить соответствующий :partial в профиле пользователя в моем приложении Rails 3.В общем, есть три частичные:

  1. _profile_credits ( Ради этого вопроса я фокусируюсь на _profile_credits. )
  2. _profile_about
  3. _profile_reviews

Я хочу сделать следующее:

<li><%= link_to "Credits", profile_credits_profile_path(:id => @profile.id), :remote => true %></li>

И иметь следующую частичную (_profile_credits) загрузку и визуализацию каждого кредита в @user.кредиты:

<% for credit in @user.credits %>
  <div class="credit">
  </div>
<% end %>

Где я пытаюсь сделать партиал, находится под ссылками и внутри контейнера div.В приведенном ниже HTML-коде показано расположение ссылок в элементе div и где я хотел бы загрузить информацию из партиалов:

<div id="tabs">
  <ul id="infoContainer">
    <li><%= link_to "Reviews", profile_reviews_profile_path(:id => @profile.id), :remote => true %></li>
    <li><%= link_to "About", profile_about_profile_path(:id => @profile.id), :remote => true %></li>
    <li><%= link_to "Credits", profile_credits_profile_path(:id => @profile.id), :remote => true %></li>
  </ul>
  <div id="tabs-1">
    ##load information from the partials inside `<div id="tabs-1">
  </div>
</div><!-- end tabs -->

И остальную часть моего кода ...

Мое profiles_controller#profile_credits действие:

def profile_credits
  respond_to do |format|
    format.js { render :layout => false }
  end
end

В моем routes.rb:

resources :profiles do
  get :profile_credits, :on => :member
end

Мой profile_credits.js.erb:

$( "#tabs" ).html( "<%= escape_javascript( render (:partial => "profile_credits", :locals => { :id => @profile.id } ) ) %>" );

В настоящий момент ничего не происходит, когдаЯ нажимаю на ссылку.Я пытался следовать различным примерам Rails 3 UJS, но не могу его получить.В какой-то момент я указал больше в действии ProfilesController profile_credits.Однако, если я был в чужом профиле, мои кредиты загружались, а не кредиты пользователя, профиль которого я просматривал.Может кто-нибудь помочь мне разобраться в этом?

1 Ответ

0 голосов
/ 29 октября 2011

Я наконец получил это на работу. Учитывая <div>, который содержит <ul> навигацию и <div> для загруженного контента, вот мой код:

HTML для моего контейнера:

<div id="tabs">
  <ul id="infoContainer">
    <li><%= link_to "Reviews", profile_reviews_profile_path, :remote => true %></li>
    <li><%= link_to "About", profile_about_profile_path, :remote => true %></li>
    <li><%= link_to "Credits", profile_credits_profile_path, :remote => true %></li>
  </ul>
  <div id="tabs-1">
    <%= render :partial 'profile_reviews %> #default
  </div>
</div><!-- end tabs -->

_profile_credits.html.erb частичное:

<% for credit in @user.credits %>
  <div class="credit">
  </div>
<% end %>

profile_credits.js.erb:

$( "#tabs-1" ).html( "<%= escape_javascript( render (:partial => "profile_credits" ) ) %>" );

profile_credits.rb контроллер:

def profile_credits
  @profile = Profile.find(params[:id])
  @user = User.find(@profile.user_id)
  @credits = User.find(@profile.id).credits
  respond_to do |format|
    format.html { render :layout => nil }
    format.xml
    format.js { render :layout => nil }
  end
end

Вот и сделал.

...