在rails app中的链接上单击div中的多个部分

时间:2018-04-03 15:37:41

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

我对编码很新。 我正在尝试找到一个解决方案,我可以在单独的链接点击中在同一个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我有

<div id="usercontent"></div>应该呈现部分内容。

view/users/show.js.erb中有此代码

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

这段代码可以很好地在一个div中只渲染一个部分但我无法弄清楚如何在点击相关链接时渲染#usercontent div中的其他部分。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以将参数与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()。