Ruby on Rails 프로젝트가 있고 페이지의 여러 부분을 업데이트하는 데 아약스를 사용하고 있습니다. 게시물 집합을 표시하는 데 도움이되는 posts_controller가 있습니다. 각 게시물에는 hides_controller를 통해 '숨김'및 '숨김 해제'할 수있는 기능이 있습니다. 또한이 페이지에는 표시된 게시물 수가 표시됩니다. 예를 들어 페이지를 처음로드 할 때 "표시된 5 개의 게시물"이라고 표시됩니다.뷰를 통해 다른 컨트롤러에서 변수에 액세스하기
사용자가 숨기기를 선택하면 게시물을 숨기기 위해 ajax를 설정했습니다. 그러나 (posts_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 : 'hides_controller'대신 'posts_controller'에서 @posts 변수를 찾으십시오.
귀하의 도움에 감사드립니다. 시간 내 주셔서 감사합니다!
제어기 구조 :
**controllers (folder)**
posts_controller.rb
hides_controller.rb
**users (folder)**
posts_controller.rb
posts_controller.rb
(상위에서 [conrollers] 폴더)
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는 '생성'작업이 아니라 '업데이트'작업에서 정의됩니다. –