我有一个Ruby on Rails项目,我使用ajax来更新页面上的几个部分。我有一个posts_controller,可以帮助显示一组职位。每个帖子都有能力通过hides_controller'隐藏'和'隐藏'。此外,该页面显示显示的帖子数量。例如,当我加载页面时,它会显示“显示5个帖子”。通过视图访问另一个控制器中的变量
我设置了ajax来隐藏帖子,一旦用户选择隐藏它;然而,该视图(由posts_controller呈现)不会将“显示的5个帖子”位更新为“显示的4个帖子”。我写的 “create.js.haml
” 文件中的以下AJAX,并认为这将解决这个问题:
: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_controller'而不是'hides_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是在'update'操作中定义的,而不是在'create'操作中定义的。 –