【问题标题】:rendering multiple partials in div on link click in rails app在rails应用程序中单击链接时在div中呈现多个部分
【发布时间】:2018-04-03 15:37:41
【问题描述】:

我对编码很陌生。 我正在尝试找到一个解决方案,了解如何在单独的链接单击时在同一个 DIV 中呈现多个部分。

到目前为止,我可以在 div 中渲染一个部分(部分 1),但是我一直在思考如何在单击其他链接时渲染其他部分。

这是我目前的代码

views/layouts/_sidebar.html.erb我有

   <li>
        <%= link_to user_path(current_user), :remote => true do %>
           <i class="glyphicon glyphicon-home"></i> Partial1
        <% end %>

   </li>
    <li>
        <%= link_to user_path(current_user), :remote => true do %>
           <i class="glyphicon glyphicon-flash"></i> Partial2                
        <% end %>
    </li>  

users_controller.rb我有

class UsersController < ApplicationController
  before_action :authenticate_user!

   def show
      @user = User.find(params[:id])

      @user_partial1 = @user.1partials
      @user_partial2 = @user.2partials

       respond_to do |format|
        format.html { @user_partial1 }
        format.js { render :show }
       end
    end   
end

users/show.html.erb我有

&lt;div id="usercontent"&gt;&lt;/div&gt; 是应该渲染的部分。

view/users/show.js.erb中有这段代码

$("#usercontent").html("&lt;%=escape_javascript(render :partial=&gt;"shared/partial1")%&gt;");

这段代码可以很好地在一个 div 中只渲染一个部分,但是当点击关联的链接时,我不知道如何在 #usercontentdiv 中渲染其他部分。

有人可以帮帮我吗?

【问题讨论】:

  • 您可以在文件中使用@user_partial1.each do |partial| ..... view/users/show.js.erb

标签: javascript jquery html ruby-on-rails ruby


【解决方案1】:

您可以将参数与link_ to 一起传递

 <li>
    <%= link_to user_path(current_user,partial: '1'), :remote => true do %>
       <i class="glyphicon glyphicon-home"></i> Partial1
    <% end %>

    <li>
    <%= link_to user_path(current_user,partial: '2'), :remote => true do %>
       <i class="glyphicon glyphicon-flash"></i> Partial2                
    <% end %>
</li>  

在您的控制器中,您可以获得要渲染的部分值:

@partial_to_render = params[:partial]

view/users/show.js.erb

$("#usercontent").html("<%=escape_javascript(render :partial=>"shared/partial" + @partial_to_render)%>");

如果您需要将内容附加到 #usercontent div 中的现有 html 中,请使用 Jquery append 而不是 $("#usercontent").html()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多