Ruby on rails 如何在RubyonRails中将数据从控制器发送到视图

Ruby on rails 如何在RubyonRails中将数据从控制器发送到视图,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有一个简单的控制器,它是通过一个脚手架创建的,具有“显示”功能 在通过脚手架创建的视图中,我有一个仅在特定条件下出现的图像 我想在控制器中设置或评估条件,并将其发送到视图。 我不知道该怎么做,也不知道这是否是正确的方法。如果您只是想根据特定条件显示和隐藏图像,那么您可以使用JQuery来执行此操作。您不应该在控制器中放置任何以视图为中心的内容 您还可以获取“show”中任何数据元素的id,并将其传递给JavaScript JQuery提供了适合您的show()和hide()方法。以下是有关隐藏

我有一个简单的控制器,它是通过一个脚手架创建的,具有“显示”功能

在通过脚手架创建的视图中,我有一个仅在特定条件下出现的图像

我想在控制器中设置或评估条件,并将其发送到视图。
我不知道该怎么做,也不知道这是否是正确的方法。

如果您只是想根据特定条件显示和隐藏图像,那么您可以使用JQuery来执行此操作。您不应该在控制器中放置任何以视图为中心的内容

您还可以获取“show”中任何数据元素的id,并将其传递给JavaScript

JQuery提供了适合您的
show()
hide()
方法。以下是有关隐藏方法的文档:

基本上,如果你的图像有一个特定的id,你会这样做:

$(document).ready(function() {
  $("#myImage").hide();

  if (some_condition === true) {
    $("#myImage").show();
  }
});  
<script type="text/javascript">
  var my_show_object = <%= @some_object.id %>  //this will be the specific id of whatever the object is that you passed from the controller
  alert(my_show_object);  //this helps with debugging to see if you have the right id
</script>
您可以将该代码放入
application.js
文件中

我制作了一个简单的JSFIDLE,演示了一种使用按钮显示和隐藏的方法:

当然,代码可能会有所不同,这取决于您尝试执行的操作

如果需要在“显示”视图中获取对象的“id”,可以在“显示”视图的底部放置一个脚本标记,如下所示:

$(document).ready(function() {
  $("#myImage").hide();

  if (some_condition === true) {
    $("#myImage").show();
  }
});  
<script type="text/javascript">
  var my_show_object = <%= @some_object.id %>  //this will be the specific id of whatever the object is that you passed from the controller
  alert(my_show_object);  //this helps with debugging to see if you have the right id
</script>

var my\u show\u object=//这将是从控制器传递的对象的特定id
警报(我的显示对象)//这有助于调试,以查看您是否具有正确的id
如果您需要的不仅仅是id,并且希望获取整个Rails对象并将其表示为Javascript,只需在Rails“show”视图的底部执行此操作:

 <script type="text/javascript">               
    var my_object = <%= @your_rails_object.to_json %>;     
    console.log(my_object); //This code allows you to look in the console and see exactly what your object looks like.
 </script>

var my_object=;
console.log(我的对象)//此代码允许您在控制台中查看对象的外观。
与上一个一样,
@您的_rails_对象
是控制器中显示视图中的变量。这将以json对象的形式返回它,以便您可以获取id或它具有的任何属性

另外,如果您刚刚学习Rails,我建议您阅读以下在线书籍:


这就是我学习Rails的方式-如果您只想基于特定条件显示和隐藏图像,那么这本书是优秀的免费的,而不是使用JQuery。您不应该在控制器中放置任何以视图为中心的内容

您还可以获取“show”中任何数据元素的id,并将其传递给JavaScript

JQuery提供了适合您的
show()
hide()
方法。以下是有关隐藏方法的文档:

基本上,如果你的图像有一个特定的id,你会这样做:

$(document).ready(function() {
  $("#myImage").hide();

  if (some_condition === true) {
    $("#myImage").show();
  }
});  
<script type="text/javascript">
  var my_show_object = <%= @some_object.id %>  //this will be the specific id of whatever the object is that you passed from the controller
  alert(my_show_object);  //this helps with debugging to see if you have the right id
</script>
您可以将该代码放入
application.js
文件中

我制作了一个简单的JSFIDLE,演示了一种使用按钮显示和隐藏的方法:

当然,代码可能会有所不同,这取决于您尝试执行的操作

如果需要在“显示”视图中获取对象的“id”,可以在“显示”视图的底部放置一个脚本标记,如下所示:

$(document).ready(function() {
  $("#myImage").hide();

  if (some_condition === true) {
    $("#myImage").show();
  }
});  
<script type="text/javascript">
  var my_show_object = <%= @some_object.id %>  //this will be the specific id of whatever the object is that you passed from the controller
  alert(my_show_object);  //this helps with debugging to see if you have the right id
</script>

var my\u show\u object=//这将是从控制器传递的对象的特定id
警报(我的显示对象)//这有助于调试,以查看您是否具有正确的id
如果您需要的不仅仅是id,并且希望获取整个Rails对象并将其表示为Javascript,只需在Rails“show”视图的底部执行此操作:

 <script type="text/javascript">               
    var my_object = <%= @your_rails_object.to_json %>;     
    console.log(my_object); //This code allows you to look in the console and see exactly what your object looks like.
 </script>

var my_object=;
console.log(我的对象)//此代码允许您在控制台中查看对象的外观。
与上一个一样,
@您的_rails_对象
是控制器中显示视图中的变量。这将以json对象的形式返回它,以便您可以获取id或它具有的任何属性

另外,如果您刚刚学习Rails,我建议您阅读以下在线书籍:


这就是我学习Rails的方式-这本书是优秀的免费的

这种情况通常应该在视图文件中使用erb或haml来处理。如果你用条件更新了你的问题,那么我会考虑更新我的答案以反映它。现在,我将使用一个通用条件

假设您只想在显示某个对象时显示图像。让我们想象一下,对象中有一个作为标志(1,0)的特征字段

如果这个对象是一篇文章,那么我们可以检查视图文件中的条件。控制员将从模型中获取物品:

-# articles_controller show action 
@article = Article.find(params[:id])


…而不是在控制器文件中包含复杂的条件。这使您可以在远离特定控制器的情况下重用该条件,并使其更易于测试。

通常应在视图文件中使用erb或haml处理该条件。如果你用条件更新了你的问题,那么我会考虑更新我的答案以反映它。现在,我将使用一个通用条件

假设您只想在显示某个对象时显示图像。让我们想象一下,对象中有一个作为标志(1,0)的特征字段

如果这个对象是一篇文章,那么我们可以检查视图文件中的条件。控制员将从模型中获取物品:

-# articles_controller show action 
@article = Article.find(params[:id])

…而不是在控制器文件中包含复杂的条件。这允许您从特定的控制器中重用条件,并使其更易于测试。

我建议您阅读“使用rails进行敏捷web开发”,它涵盖了这一点(以及许多其他内容)。我建议您阅读“使用rails进行敏捷web开发”,它涵盖了这一点(以及许多其他内容)。