【问题标题】:Creating a partial rails for comments为评论创建部分栏杆
【发布时间】:2016-08-30 09:02:28
【问题描述】:

我的主题与this 问题非常相似,只是我的 cmets 显示在引导模式中。我需要创建一个 cmets 部分,以便我可以使用 respond_to |format| do format.js 来渲染部分并更新模态中的 cmets。

问题 #1。如何创建部分 cmets?代码如下:

CommentsController

def create
    @photo = Photo.find(params[:photo_id])
    @comment = @photo.comments.build(comment_params)
    @comment.save
    respond_to do |format|
      format.html { redirect_to :back }
      format.js 
    end 
end 

UsersController

def show
  @user = User.find(params[:id])
  @photos = @user.photos.order('created_at desc').paginate(page: params[:page], per_page: 12)
end

Users/show.html.erb   

<% @photos.in_groups_of(3, false).each do |group| %>
    <div class="row instagram">
      <% group.each do |photo| %>
        <a data-toggle="modal" href=<%="#"+"#{photo.id}"%>>
          <%= image_tag(photo.picture.ad.url, class: "img-responsive")%>
        </a>  
        <div class="modal" id=<%="#{photo.id}"%> tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
        .
        .      
         <div class="col-sm-4">
           <div class="instacomments">
             <% photo.comments.each do |comment| %>
               <p class="commentblock">
                  <%= link_to comment.user.name, user_path(comment.user_id)%><span> </span><%= comment.content %> 
               </p>
             <% end %>
           </div>
         </div>          

【问题讨论】:

    标签: ruby-on-rails renderpartial


    【解决方案1】:

    在你的show.html.erb:

    <%= render partial: "comments/comment", collection: photo.comments, as: :comment %>
    

    注意as: :comment 键是为视图中的每个集合项设置局部变量的名称。

    所以现在您可以在comments/_comment.html.erb 中引用comment 变量:

    <p class="commentblock">
       <%= link_to comment.user.name, user_path(comment.user_id)%>
       <span> </span> <!-- Not sure why you have an empty <span> here -->
       <%= comment.content %> 
    </p>
    

    【讨论】:

    • span 是创建一个空间。还有其他方法吗?
    • 我会在您的用户链接右侧使用一个小边距。
    • 我正在尝试使用 create.js.erb 显示新的 cmets:$('.instacomments').html("&lt;%= escape_javascript(render "comments/comment", collection: photo.comments, as: :comment) %&gt;); 但它对我不起作用。 ActionView::Template::Error (undefined local variable or method photo' for #&lt;#&lt;Class:0x007f602c070c90&gt;:0x007f6063df7d00&gt;): 有什么想法吗?目前,我必须关闭模式并刷新浏览器才能看到添加的 cmets。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多