Ruby on rails Rails 3:在视图中显示来自控制器的变量

Ruby on rails Rails 3:在视图中显示来自控制器的变量,ruby-on-rails,variables,view,controller,Ruby On Rails,Variables,View,Controller,我对rails非常陌生,我想知道如何将控制器中的变量显示到视图中 基本上,我有两个文件:articles\u controller.rb和\u article.html.erb <pre> <%= @article_votes.inspect %> </pre> 在我的控制器文件中,我有一个变量@article\u vots,我想在视图中显示它。我尝试过使用,但它根本不显示任何内容 有人有什么指导吗?谢谢大家! \u article.html.erb是一

我对rails非常陌生,我想知道如何将控制器中的变量显示到视图中

基本上,我有两个文件:
articles\u controller.rb
\u article.html.erb

<pre>
  <%= @article_votes.inspect %>
</pre>
在我的控制器文件中,我有一个变量
@article\u vots
,我想在视图中显示它。我尝试过使用
,但它根本不显示任何内容


有人有什么指导吗?谢谢大家!

\u article.html.erb
是一个局部视图。您确定在浏览器中显示了正确的操作吗?

的输出将取决于@article\u voates是哪个类的对象,以及您是否实际呈现了该\u article.html.erb模板

只需在index.html.erb文件中调用“article”%>,或在尝试呈现此视图时使用的控制器操作之后命名的任何.html.erb文件

通常来自控制器@article_votes是一个数组(按照惯例),复数名称表示对象数组,单数名称表示ActiveRecord类的特定对象,该类基于一个名为article_votes的表,该表将包含表中针对特定记录保留的所有值

确保@article_vots是非nil类的实例

如果它只是一个字符串(@article_voces=“a string”),那么您将在视图中看到它。 如果它是调用ActiveRecord从ArticleVoces模型中查找所有对象的结果,那么它将是一个数组,如果表中没有任何内容,则该数组将为空。您需要从该数组中获取特定对象,然后需要选择要显示该对象上的可用方法

e、 g

假设表article_votes上有一个名为name的列,并且该表中有1条article_vote记录的值为'This a name',则a控制器操作中的以下代码将在屏幕上显示“This a name”

@article_vote=article vote.first


如果您在partial中有,并且假设您实际上正在呈现该partial

如果您正在调用partial,则需要将@article\u vots变量传递给它

<@= render 'article', :article_votes => @article_votes %>
@article\u投票%>
现在,在您的部分中,您可以使用

<%= article_votes %>

不确定您对rails有多陌生。在控制器中定义的任何实例变量都可以在视图中访问

因此,如果控制器中定义了
@article\u vows
,则


视图中的某个位置应该显示在页面中

但是默认情况下不会显示
\u article.html.erb
。如果在
ArticlesController
中有
show
方法,则会呈现名为
show.html.erb
的视图。这是一种通用方法,因此对于
index
方法,它应该被称为
index.html.erb


希望这能有所帮助。

我刚才遇到的另一件重要事情是,必须在调用渲染之前设置变量值

我有一个标准的“创建”块,如果模型没有保存,它将返回错误。在本例中,我设置了一个实例变量,以便重新渲染将滚动到错误所在的表单


当我清楚地设置变量时,我不明白为什么没有设置它。当我将它移到“render action::new”上方时,它就工作了。

你确定@article\u vows包含一些内容吗?您可以在控制器中尝试“puts article_Voces:#{@article_Voces}”,并检查日志/development.log以查看Rails应用程序中是否有输出Never use puts!使用logger.debug,请参阅此处的第2.3节,或在视图中使用纯debig。也记录在该页面上,尽管调用很可能不会得到期望的结果,但它需要类似于article_votes的内容。某些属性
@article_votes
是控制器的一个实例变量,无需传入该变量,尽管不依赖实例变量(这鼓励在其他视图中重用)可以被认为是分部的良好实践。第二,@jamesw说的:我更喜欢写
文章。如果你不知道会发生什么,请检查
:它在所有情况下都会生成一个清晰的字符串。我应该更清楚一些。
article\u-vots
变量将在partial中可用。因此,是的,您可以调用与变量关联的任何属性。成功了!谢谢你的帮助!