填充Rails表单字段

时间:2010-05-12 17:07:01

标签: ruby-on-rails forms

这很难解释,但这里有。我有一个Rails应用程序,包括学生,课程,作业和成绩

在学生表演视图中,列出了学生所学的所有课程,以及与这些课程相关的作业。所有在学生和作业之间有记录成绩的作业也会说明成绩,所有其他作业都显示“N / A”。我想要做的是根据所点击的链接,预先填充学生和作业字段的表格链接。

这是一个例子。彼得帕克有一个“数学考试”的成绩,但不是'数学CW'。如果用户点击“添加”链接,我希望显示一个视图,其中包含预先填充了学生姓名和作业名称的表单,以便为要添加的成绩做好准备。

alt text http://img695.imageshack.us/img695/7540/screenshot20100512at180.png

我基本上不知道如何最好地将这些数据传递给表单,或者如何让表单以不可编辑的方式显示数据。

感谢。

2 个答案:

答案 0 :(得分:3)

杰克你有几个问题,其中一个相对容易以不可编辑的方式显示数据你可以禁用它

http://www.w3.org/TR/html401/interact/forms.html#h-17.12

如何将student_id和assignment_id传递给表单?系统只会在本地使用,但我会尽力验证一切。 - 杰克

杰克,你需要在当前视图中传递一些可以传递student_id和assignment_id的内容。像一个link_to。

<%= link_to "show me my assignments", {:action => 'show', :controller => "assignments"}, :student_id => student.id, :assignment_id => student.assignment[0].id %>

(注意使用宁静的路线可能更好,但这表明发生了什么更好)

这个链接要做的是调用赋值控制器的show动作。你可以通过调用:

来获取控制器中的id
assignment_id = params[:assignment_id]
student_id = params[:student_id]
@student = Student.find(:first, :conditions {:id => student_id})
...

然后在/ app / views / assignments /目录下的show.html.erb中,您需要呈现表单代码,例如:

<%= form_for @student, :student ...

我掩饰了许多可能性,你问的问题有点宽泛。将其分解为更小的块(更少关注应用程序而更多地关注单个操作)并重新询问论坛成员可能更有帮助。

你可以问更多:

  • 从a发送数据到控制器 链路
  • 从中查找数据库中的项目 控制器
  • 从实例生成表单 控制器中的变量
  • 最后在a中禁用text_field 形式

我会说给我建议的一个镜头(从视图发送数据到控制器,然后使用控制器中的数据渲染另一个视图),如果你无法弄清楚某些东西,试着问一下关于你所遇到的问题非常集中的问题,你最终可能会比所有产品都好得多。

答案 1 :(得分:1)

我只是链接到表单并传递student_id和assignment_id。您无法真正使表单字段“不可编辑”,但您可以在显示和保存信息之前验证该用户是否有权查看/编辑。