代码之家  ›  专栏  ›  技术社区  ›  Jack

填充Rails窗体字段

  •  1
  • Jack  · 技术社区  · 16 年前

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

    在student show视图中,有一个学生参加的所有课程的列表,以及与这些课程相关的作业。在学生和作业之间有记录成绩的所有作业也说明成绩,所有其他作业显示“N/a”。我想做的是有一个链接到一个表格与学生和作业字段预先填充,这取决于点击的链接。

    下面是一个例子。彼得·帕克有“数学考试”的成绩,但没有“数学考试”的成绩。如果用户单击“添加”链接,我希望显示一个视图,其中预填充了学生姓名和作业名称,准备添加年级。

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

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

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Schneems    16 年前

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

    如何将学生证和作业证传递到表格中?这个系统只会在本地使用,但我还是会验证一切。杰克

    杰克,你在当前视图中需要一些可以传递学生id和作业id的东西,比如链接到。

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

    此链接将调用assignments控制器的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 ...
    

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

    你可以问更多关于:

    • 从服务器向控制器发送数据 链接
    • 从中查找数据库中的项
    • 控制器中的变量
    • 形式

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

        2
  •  1
  •   Anna    16 年前

    我只需要链接到表单并传递student\u id和assignment\u id。您不能真正将表单字段设置为“不可编辑”,但您可以在显示和保存信息之前验证该用户是否具有查看/编辑权限。

    推荐文章