Rails 3 link_to partial with for循环内部

时间:2011-10-22 22:55:57

标签: javascript ruby-on-rails-3 partial-views

我之前从未编程过,并且很难让link_to在我的Rails 3应用内部的用户个人资料中呈现相应的:partial。总而言之,有三个部分:

  1. _profile_credits(我为了这个问题而专注于_profile_credits
  2. _profile_about
  3. _profile_reviews
  4. 我想要点击以下内容:

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

    并加载以下部分(_profile_credits)并在@ user.credits中呈现每个信用:

    <% 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 :(得分:0)

我终于开始工作了。如果<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

这样做了。