显示空白表单Rails

时间:2013-08-13 16:35:01

标签: ruby-on-rails ruby

我是Rails中的新手,我正在开发一个应用程序,需要以一种形式显示患者信息,以便在需要时由医生更新。我可以从侧边栏的列表中选择一个患者,我想首先显示一个空表格,当选择患者时,所有信息都会显示在其上。

我能猜到的唯一方法就是先将表格显示为空,然后在选择患者后,抓住控制器上的病人并重新加载页面以允许表格获取患者信息。

有没有人有更好的主意?在否定答案:我如何显示空表格?

提前感谢您的时间。

最好的问候。

更新:这是我要在网页上展示的表单。 @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,因此选择了页面崩溃。

再次感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

组件1:现有患者的导航列表

  1. 迭代收集患者对象,为每位患者输出一个链接到其编辑视图:link_to patient.name, edit_patient_path(patient)
  2. 此导航视图将是您将包含在PatientsController #new动作和#edit动作的视图模板中的部分视图。
  3. 组件2:不存在/新患者的空表

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

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

        我强烈建议使用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

答案 1 :(得分:1)

我认为,还有一个选择是您可以在表单上实例化对象:

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

由于