2013-03-14 49 views
1

我想從鏈接單擊時將我的視圖html中的代碼帶入彈出框 在Ruby on Rails中可能嗎?我已經有彈出工作,但我想了解一下代碼即可顯示評論:將視圖中的代碼導入Rails中的彈出框

<div class = "comments"><% if post.comments.exists? %> 
    <% post.comments.each do |comment| %> 
    <%= image_tag("http://www.gravatar.com/someavatarlink %) <!-- Retrieves Gravatar --> 
    <%= link_to comment.user.name, comment.user %> 
      <span class="timestamp"><%= time_ago_in_words(comment.created_at) %> ago</span> 
    <span class="content2"><%= comment.comment_content %></span> 
    <% end %> 
<% end %></div> 

添加了Ajax調用_comment_form.html.erb

<%= link_to "Link", comment, :remote => true %> 
     Comments 
    <% end %></div></div> 
    <div id ="modal" class = "comments"><% if post.comments.exists? %> 
     <% post.comments.each do |comment| %> 
     <%= link_to comment.user.name, comment.user %> 
       <span class="timestamp"><%= time_ago_in_words(comment.created_at) %> ago</span> 
     <span class="content2"><%= comment.comment_content %></span> 
     <% end %> 
    <% end %></div> 

新增高清顯示爲註釋控制器

class CommentsController < ApplicationController 
    def new 
    @post = post.new(params[:post]) 
    end 

def show 
    @comment = Comment.find(params[:id]) 
    respond_to do |format| 
    format.js 
    end 

    def create 
    @post = post.find(params[:micropost_id]) 
    @comment = Comment.new(params[:comment]) 
    @comment.post = @post 
    @comment.user = current_user 
    if @comment.save 
     redirect_to(:back) 
    else 
     render 'shared/_comment_form' 
    end 
    end 
end 

創建show.erb.js,放入 '意見' 和 '共享' 文件夾

$("#popup").html('<%= escape_javascript(render "comments") %>'); 

後來終於寫了我的部分是在評論/ _comment.html.erb

<% if post.comments.exists? %> 
    <% post.comments.each do |comment| %> 

    <%= link_to comment.user.name, comment.user %> 
      <span class="timestamp"><%= time_ago_in_words(comment.created_at) %> ago</span> 
    <span class="content2"><%= comment.comment_content %></span> 
    <% end %> 
<% end %> 

回答

4

1. Ajax調用

若要檢索您使用Ajax調用數據。

<%= link_to "Link", comment, :remote => true %> 

Rails會評估這些請求,並會尋找一個.js查看第一(它將使用html的,如果不存在的話)。

同時也要確保控制器接受像

def show 
    @comment = Comment.find(params[:id]) 
    respond_to do |format| 
    format.js 
    end 
end 

2.寫JS視圖

添加show.erb.js以您的評論請求.js文件。這是一個包含ERB評估的JavaScript文件。 在此模板使用的js代碼彈出,並告訴它來填充一個div您的HTML代碼如下所示:

$("#popup").html('<%= escape_javascript(render @comment) %>'); 

這將使評論。我們唯一需要的是部分呈現評論的html。

3.寫偏了HTML

寫的部分你想在彈出的視圖部分。這可以在普通的html視圖或js視圖中使用。爲了使其與代碼打交道上述叫它_comment.html.erb

要知道更多關於諧音,你可以在這裏檢查指南:
http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

+0

我找過你的答案,但有一個快速的問題。我已將上述代碼放入「共享/評論」中,文件名爲_comment.html.erb。我可以在這裏使用<%= link_to%>在彈出窗口中顯示視圖嗎? – user2159586 2013-03-14 07:06:52

+0

僅供參考 - 使彈出窗口是我已經有工作(我使用facebox)。我的問題是試圖找出link_to代碼應該在我的原始文章中給出上述代碼 – user2159586 2013-03-14 07:33:55

+0

鏈接需要是「遠程」鏈接。我更新了答案。我只是有點困惑,你想表達什麼。是'用戶'還是'評論'?猜猜你會弄清楚如何修改代碼。 – deepflame 2013-03-14 07:58:42