-1

我是 Rails 的新手,我正在开发一个应用程序,该应用程序需要在需要时由医生更新的表格中显示患者信息。As soon I can select a patient from a list from sidebar I want to display first just an empty form and when a patient is selected all the info will be displayed on it.

我猜想这样做的唯一方法是首先将表单显示为空,然后,一旦选择了患者,就在控制器上捕获患者并重新加载页面以允许表单获取患者信息。

有人有更好的主意吗?否定答案:如何显示空表单?

在此先感谢您的时间。

此致。

更新:这是我试图在页面上展示的表格。@patient 是一个实例变量,一旦显示页面,它还没有定义。一旦医生从侧面的列表中选择一名患者,它就会显示出来。

<div class="row">                                                                               
  <div class="span6">                                                                           
    <%= render 'shared/error_messages' %>                                                      
    <div>                                                                                       
    <%= form_for(@patient) do |p| %>                                                            
      <%= text_field_tag 'patient[name][]', nil, :placeholder => "name", :style =>height:12px;font-size:10px;" %>                                                                             
      <%= text_field_tag 'patient[name][]', nil, :placeholder => "surname", :style =>"height:12px;font-size:10px;" %>                                                                          
      <%= p.text_field :email, :placeholder => "email", :style => height:12px;font-size:10px;" %>                                                                                              
    <%= p.text_field :phone, :placeholder => "phone", :style => height:12px;font-size:10px;" %>                                                                         
      <%= check_box_tag :active %>                                                              
      <%= check_box_tag :sex, 'male' %>                                                         
      <%= check_box_tag :sex, 'female' %>                                                       

      <%= chack_box_tag :dao %>                                                                 
      <%= p.submit "Sumbit", class: "btn btn-small btn-primary pull-right", id: "boton" %>      
    <% end %>                                                                                   
    </div>                                                                                      
  </div>                                                                                        
</div>

这就是问题所在。由于控制器上的 @patient=nil 被选中,因此页面崩溃。

再次感谢。

4

2 回答 2

1

您在此处描述的是模型上的基本控制器操作:

  • 空表单:#new 对患者控制器的操作
  • 填写的表格:#edit 对患者控制器的操作

编辑:完成您提议的用户体验的新策略

第 1 部分:现有患者的导航列表

  1. 遍历患者对象的集合,将每个患者的链接输出到其编辑视图:link_to patient.name, edit_patient_path(patient)
  2. 此导航视图将是部分视图,您将包含在 PatientController #new 操作和 #edit 操作的视图模板中。

第 2 部分:不存在/新患者的空白表格

  1. 在控制器新动作中,实例化一个新的 Patient 对象,如下所示@patient = Patient.new
  2. 就像在上面的视图代码中一样,在该 @patient 实例变量上呈现患者表单。
  3. 包括现有患者的导航列表作为视图部分。

第 3 部分:现有患者填写表格

  1. 在控制器编辑操作中,实例化 Patient 实例变量,如下所示@patient = Patient.find(params[:id])
  2. 就像在上面的视图代码中一样,在该 @patient 实例变量上呈现患者表单。
  3. 包括现有患者的导航列表作为视图部分。

编辑:脚手架上的旧点

我强烈建议使用 Rails 生成器和脚手架来设置基本表单和视图模板,至少作为一种教育追求。您将能够通过命令行自动生成正确的控制器操作并查看您在上面为#new 和#edit 描述的模板。

阅读这篇文章:http: //viget.com/extend/rails-3-generators-scaffolding

然后按照本教程进行操作:http ://railscasts.com/episodes/216-generators-in-rails-3

随着您对 Rails 开发的熟悉程度越来越高,生成器和脚手架可能无法满足您的定制需求。然而,它们是一个很好的起点。

另见: http: //guides.rubyonrails.org/getting_started.html#getting-up-and-running

于 2013-08-13T16:53:56.813 回答
1

我认为,另一种选择是您可以在表单本身上实例化您的对象:

<%= form_for(Patient.new) do |p| %>

谢谢

于 2013-08-13T17:55:42.833 回答