У меня есть проект Ruby on Rails, и я использую ajax для обновления нескольких частей на странице. У меня есть post_controller, который помогает отображать набор сообщений. Каждый пост имеет возможность быть «скрытым» и «незакрытым» через hides_controller. Кроме того, на странице отображается количество отображаемых сообщений. Например, когда я загружаю страницу, она говорит «5 сообщений, показанных».Доступ к переменной в другой системе с помощью вида
Я настроил ajax, чтобы скрыть сообщение, когда пользователь выбирает его скрыть; однако представление (отображаемое post_controller) не обновляет бит «5 сообщений, показанных», до «4 показанных сообщений». Я написал следующий Аякс в файле "create.js.haml
", и думал, что это будет решить:
:plain
$(".post#{@post.id}_container").hide("drop", { direction: "up" }, 'fast');
$(".post_counter").html("#{escape_javascript(render('users/posts/hide'))}");
пользователей/сообщения/hide.html.haml:
%h6= "#{@posts.size} posts shown"
Вопрос, который я запущен в: @posts не определен в действии 'hides_controller' 'create', вместо этого он определен в 'posts_controller'. Очевидно, повторение кода не делает его очень сухим.
Есть ли способ сообщить точке зрения ссылку на переменную с другого контроллера? IE: найдите переменную @posts из «posts_controller» вместо «hides_controller»?
Ваша помощь очень ценится. Спасибо за ваше время!
Контроллер Структура:
**controllers (folder)**
posts_controller.rb
hides_controller.rb
**users (folder)**
posts_controller.rb
posts_controller.rb
(в родительском [Регуляторы] папки):
class PostsController < ApplicationController
code
end
posts_controller.rb
(в ребенка [пользователь] папка):
class Users::PostsController < PostsController
def update
@posts is defined here
end
end
hides_controller .rb:
class HidesController < ApplicationController
def create
code
end
end
Мне это нравится, но моя структура контроллера немного отличается. Пожалуйста, обратитесь к настройке контроллера в моем исходном сообщении. Должен ли я сделать hides_controller подклассом User :: posts_controller? Большое вам спасибо за вашу помощь! –
Кроме того, @posts определяется в действии «update», а не в действии «create». –