1

我有一个非常简单的 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,也不确定如何显示课程数据库的内容。

任何帮助将不胜感激

4

1 回答 1

3

home.html.erbhttp://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 %>

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

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

于 2012-05-14T06:56:14.390 回答