#ruby-on-rails #ruby-on-rails-3
#ruby-на-рельсах #ruby-on-rails-3
Вопрос:
новичок в rails и действительно новичок в jquery. Я настроил некоторый рендеринг страницы AJAX, добавив respond_to :html, :js
в свой контроллер и respond_to @Posts
в метод posts#index. Он частично отображает мои просмотры / сообщения /_posts.html.erb с использованием AJAX, однако мне нужен был 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:
У меня есть что-то похожее на такую работу:
format.html { render "posts/_posts", :locals => { :posts => @posts } }