【问题标题】:Populate Rails form fields填充 Rails 表单字段
【发布时间】:2011-02-18 17:57:35
【问题描述】:

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

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

这是一个例子。 Peter Parker 为“数学考试”评分,但没有为“数学 CW”评分。如果用户单击“添加”链接,我希望显示一个视图,其中预先填充了学生姓名和作业名称,以便添加成绩。

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

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

谢谢。

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

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

    【讨论】:

    • 技术修正。你可以禁用一个表单域,但你绝对不应该相信它的数据没有改变。
    • 如何将 student_id 和 assignment_id 传递给表单?系统只会在本地使用,但我会验证一切。
    【解决方案2】:

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

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

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

    Jack,您需要在当前视图中提供一些可以传递 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 %>
    

    (请注意,使用宁静的路线可能会更好,但这可以更好地显示正在发生的事情)

    这个链接的作用是调用 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 ...
    

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

    您可以询问更多关于:

    • 从一个控制器向控制器发送数据 链接
    • 从您的数据库中查找项目 控制器
    • 从实例生成表单 控制器中的变量
    • 最终禁用 text_field 在 表格

    我会说给出我的建议(将数据从视图发送到控制器,然后使用控制器中的数据来呈现另一个视图),如果您无法弄清楚,请尝试询问关于您遇到的问题的非常集中的问题,您最终可能会得到比所有产品更好的产品。

    【讨论】:

    • snowmaninthesun 在这里是正确的,但是不要将表单字段设为disabled - 将其设为readonly。禁用输入的不同之处在于它们没有提交其值。
    • 非常感谢您的回答 snowmaninthesun - 非常感谢它,我设法使用您回答中的指针在大约 10 分钟内使其工作。顶级人物
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2011-05-19
    • 1970-01-01
    • 2018-02-27
    • 2014-07-12
    相关资源
    最近更新 更多