Rails 3 - 如何将语句从一个控制器打印到另一个
Posted
技术标签:
【中文标题】Rails 3 - 如何将语句从一个控制器打印到另一个【英文标题】:Rails 3 - how to print the statement from one controller to the other 【发布时间】:2012-02-05 15:39:51 【问题描述】:我有一个 ArticleController,其中包含表 Articles 中的所有项目的语句。该语句还使用 jQuery 进行分页。
我想在另一个控制器中将此语句与分页一起用于数据库表中的项目语句,唯一不同的是另一个表。
我该怎么做?我在我的其他控制器中尝试类似:
<%= render :template => 'articles/index'%> #here is the Articles' statement
但是当我点击下一页的语句时,我只看到加载,但数据没有加载 - 看起来其他页面没有加载。
我做错了什么?
编辑: - 控制器:
ArticlesController
def index
@articles = Article.all.per_page(8)
respond_to do |format|
format.html # index.html.erb
format.js
format.xml render :xml => @articles
end
end
articles/index.html.erb
<div id="articles">
<%= render @articles %>
</div>
<%= will_paginate @articles %>
文章/index.js.erb
$('#articles').append('<%= j render(@articles) %>');
articles/_article.html.erb
...just a printing of data...
第二个控制器 - SecondsController:
def index
@articles = Article.all.per_page(8)
end
秒/index.html.erb
<%= render :template => 'articles/index'%>
【问题讨论】:
你能把你的两个控制器包括进来吗?听起来您可能有一个自定义方法来操作数据?这就是你所说的“声明”吗?也许您可以将它移到应用程序助手中,但实际上,任何类型的数据操作都应该在模型中。 我添加了我的控制器 + 视图。 【参考方案1】:我开始写评论,但是太长了。
我没有使用 ajax 分页,所以我不确定它应该如何工作。但是,您的代码让我感到困惑。
分页是否在标准的 ArticlesController 上工作?如果即使这样也不起作用,那么也许您想从一个已知的工作示例开始,例如 RailsCast #174。
看起来您正在从索引本身渲染索引(渲染@articles)。这真的有效吗?我希望它会因无限循环而崩溃或做一些意想不到的事情。
也许没关系,但我只是用这种方式使用 will_paginate。这有什么改变吗?
Article.all.paginate(:page => params[:page], :per_page => params[:per_page])
再说一次,我没有在这里使用 ajax 的经验,所以我无法直接帮助您。但是,您是否先让它与标准 html 一起工作,然后在它工作后逐步添加 ajax?这是您可以使用的一种结构:(我更喜欢显式本地,但如果您愿意,您可以忽略它)。
articles/index.html.erb(秒数/index.html.erb 相同)
...
<%= render :partial =>'articles/list', :locals => :articles => @articles %>
...
articles/_list.html.erb:
...
<%= articles.each do |article| %>
<% render :partial =>'articles/article', :locals => :article => article %>
<% end %>
<%= will_paginate articles %>
...
【讨论】:
以上是关于Rails 3 - 如何将语句从一个控制器打印到另一个的主要内容,如果未能解决你的问题,请参考以下文章
Rails 将@variable 从一个显示页面传递到另一个显示页面
如何将 Postgres 数据库从一个 Elastic Beanstalk 环境复制到另一个环境?我正在使用 Rails 5
在 RAILS 中将模型从一个控制器动作传递到另一个控制器动作的替代方法
将 ImageData 从一个视图控制器传递到另一个视图控制器
如何使用 SWrevaelviewController swift 3 将数据从 tableview 的特定行传递到另一个视图控制器