Rails 3:在控制器中发送局部变量来查看?

时间:2011-11-01 23:59:28

标签: ruby-on-rails ruby-on-rails-3

对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 }

任何想法如何发送得到这个工作?非常感谢。

1 个答案:

答案 0 :(得分:3)

我有类似的工作:

format.html { render "posts/_posts", :locals => { :posts => @posts } }