对rails很新,对jquery来说真的很新。我通过将respond_to :html, :js
添加到我的控制器并在帖子#index方法中添加respond_to @Posts
来设置一些AJAX页面呈现。它使用AJAX渲染我的views / posts / _posts.html.erb部分,但是,我需要将html响应指向同一个地方,所以我尝试添加respond_to do |format|
块。
帖子#索引
@posts = ...
respond_to do |format|
format.html { render 'posts/_posts' }
format.js { respond_with @posts }
这可以工作并将我的:html
响应发送到正确的视图,但我有变量问题。我的帖子#index使用@posts变量,但我的views/posts/index.js.erb
文件执行此操作:
$('#stream').html('<%= escape_javascript(render "posts", :posts => @posts) %>');
因此我的views/posts/_posts.html.erb
会查找posts
而不是@posts
<% posts.each do |post| %>
<%= render 'shared/feed_item', :feed_item => post %>
<% end %>
我尝试从控制器发送局部变量,如下所示,但这不起作用:
帖子#索引
@posts = ...
respond_to do |format|
format.html { render 'posts/_posts', :posts => @posts }
format.js { respond_with @posts }
任何想法如何发送得到这个工作?非常感谢。
答案 0 :(得分:3)
我有类似的工作:
format.html { render "posts/_posts", :locals => { :posts => @posts } }