我希望在点击链接时将我的视图html中的代码带入弹出窗口 Ruby on 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>
添加了对_comment_form.html.erb的Ajax调用
<%= 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>
在评论控制器中添加了def show
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") %>');
然后最后写了我的部分,这是在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 %>
答案 0 :(得分:4)
<强> 1。 Ajax调用
要检索数据,请使用Ajax调用。
<%= link_to "Link", comment, :remote => true %>
Rails将评估这些请求并首先查找.js视图(如果不存在,将使用.html)。
确保控制器接受对.js的请求,如
def show
@comment = Comment.find(params[:id])
respond_to do |format|
format.js
end
end
<强> 2。写js视图
在评论中添加show.erb.js
视图。这是一个带有ERB评估的JavaScript文件。
在这个模板中使用你的js弹出代码并告诉它用你的html代码填充一个div,如下所示:
$("#popup").html('<%= escape_javascript(render @comment) %>');
这将呈现评论。我们唯一需要的是部分渲染评论的html。
第3。为html写部分
在弹出窗口中为要包含的视图部分写一个部分。然后可以在普通的html视图或js视图中使用它。要使其与上面的代码一起使用,请将其命名为_comment.html.erb
要了解有关部分内容的更多信息,请在此处查看指南:
http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials