2010-05-12 146 views
1

这很难解释,但是在这里。我有一个包含学生,课程,作业和成绩的Rails应用程序填充Rails表单字段

在学生表演视图中,列出了学生需要的所有课程以及与这些课程相关的作业。在学生和作业之间有记录成绩的所有作业也说明了成绩,其他成绩都显示为“不适用”。我想要做的是链接到一个表格,学生和分配字段预填充,具体取决于点击的链接。

这里是一个例子。彼得帕克有'数学考试'的成绩,但不是'数学CW'的成绩。如果用户点击“添加”链接,我希望显示一个视图,并在表单中预先填入学生姓名和作业名称,以便添加成绩。

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

我基本不知道如何以最佳方式这个数据传递到形式,或者如何有表单无法修改的方式显示数据。

谢谢。

回答

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 %> 

(注意它可能是更好的使用宁静的路线,但是这显示出较好的是怎么回事)

一下这个链接会做的就是调用分配控制器的表演动作。您可以通过调用获得ID的控制器:

assignment_id = params[:assignment_id] 
student_id = params[:student_id] 
@student = Student.find(:first, :conditions {:id => student_id}) 
... 

然后在/ app /视图/任务/目录下的show.html.erb你需要使你的表单代码,类似:

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

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

你可以多问一下:

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

我会说给我提出了一个镜头(从视图发送数据到控制器,然后使用控制器中的数据来渲染另一个视图),如果你找不到什么东西,试着问一个问题关于你遇到的问题非常集中的问题,你可能会得到更好的产品。

+1

snowmaninthesun在这里是正确的轨道,*但*不要使表格字段“禁用” - 使它“只读”。禁用输入的不同之处在于它们不提供**值。 – nfm 2010-05-12 22:46:33

+0

非常感谢您的回答snowmaninthesun - 真的很感激它,我设法在大约10分钟内使用您的答案中的指针来工作。头号人物 – Jack 2010-05-13 09:21:44

1

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

+1

技术更正。您可以禁用表单字段,但绝对不应该相信来自它的数据不会改变。 – Anna 2010-05-12 17:52:35

+0

如何将student_id和assignment_id传递给表单?该系统只会在本地使用,但我会确认一切。 – Jack 2010-05-12 19:28:34