【问题标题】:Struggling to view all database entries in my HTML output努力查看我的 HTML 输出中的所有数据库条目
【发布时间】:2012-05-14 06:42:09
【问题描述】:

我有一个非常简单的 Ruby on Rails 应用程序,它有一个文本框,我可以在其中将内容(限制为 200 个字符)输入到数据库中。

我的目标是在文本框下方列出项目,以便当用户输入内容时,它会出现在不断增长的列表的顶部。

现在我有一些糟糕的代码不起作用,但我不知道为什么。

在我的查看页面中,位于home.html.erb,我有这个区域可供查看课程:

<td class="my-lessons">

</td>

在我的Lesson controller 我有以下内容:

  def printLesson
    @lesson = Lesson.find(params[:id])

    puts @lesson.content
  end

我不知道如何在我的代码中调用 printLesson 以及一般如何显示课程数据库的内容。

任何帮助将不胜感激

【问题讨论】:

  • 看来你没有使用 RESTful 路由,对吗?
  • 我相信我是。我现在还不够先进,无法做任何其他事情。我没有正确调用该方法,我知道。我不知道如何调用该方法并让它吐出第一课的内容

标签: html ruby-on-rails css ruby


【解决方案1】:

home.html.erb 会在您转到 http://localhost:3000/lesson/home 时呈现,前提是您在 routes.rb 中定义了适当的路由:

match 'lesson/home' => 'lesson#home'

所以在您的Lesson 控制器中,在home 操作中具有以下内容:

def home
  @lessons = Lesson.all
end

现在在您的home.html.erb 视图中呈现@lessons 的内容

<% @lessons.each do |lesson| %>
<tr>
    <td class="my-lessons">
      <%= lesson.Name %>
    </td>
</tr>
<% end %>

您遇到的问题是您认为您必须告诉 Rails 在您的控制器操作中吐出输入(puts @lesson.content 行)。 Rails 按照惯例工作。在您的控制器操作中创建的任何实例变量都可以在您的视图中访问。所以上例中的@lessons 变量可以在home.html.erb 视图中访问。

我建议阅读以下内容以获取有关路由和渲染视图的更多信息:

【讨论】:

  • 我认为这是我的一个误解,到 home.html.erb 的路径是 app/views/pages/home.html.erb 而不是 app/views/lessons/home.html。厄伯。知道需要做什么样的路由优化吗?
  • 应用中视图的位置与 URL 中的路径不对应。您最好遵循 Rails 约定并将其放入 app/views/lesson/home.html.erb
  • 感谢索利亚。所以我已经开始工作了,展示了这些教训。在views/pages/home.html.erb中显示相同内容的最有效方法是什么?
  • 最简单的方法是将代码从lesson_controller.rb 移动到新的控制器page_controller.rb,将Lesson 的实例重命名为Page。然后修改路由改为去pages
  • 你是最好的索利亚。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 2021-07-22
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 2021-05-19
相关资源
最近更新 更多