【发布时间】:2012-05-03 02:19:10
【问题描述】:
我有一个 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”“创建”操作中定义,而是在“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
【问题讨论】:
标签: jquery ruby-on-rails ajax