我想通过索引页面上的按钮从数据库中检索特定记录,并将该对象存储在临时数组中,然后在特定视图上显示对象的属性。但是find方法的记录没有存储在变量中,我不知道为什么......我收到的错误是nil:NilClass。(在我的项目中,我希望能够为一个有序的患者列表一天并在视图中显示它们
这是我的代码:
patient_index.html.erb(来自脚手架) <tbody>
<% @patients.each do |patient| %>
<tr>
<td><%= patient.name %></td>
<td><%= patient.last_name %></td>
<td><%= patient.id %></td>
<td><%= link_to 'Show', patient %></td>
<td><%= link_to 'Edit', edit_patient_path(patient) %></td>
<td><%= link_to 'Destroy', patient, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<td> <%= button_to 'Order', order_path(id: patient)%></td>
<th><%= @temp[0].name %></th> #testing if it shows the value here
</tr>
<% end %>
的routes.rb
post 'order', to: 'patients#order'
patients_controller.rb
def index
@patients = Patient.all
end
def show
end
def edit ... #generated by scaffold
def destroy ...
def update ...
def order
@temp = []
@the_patient = Patient.find(params[:id])
@temp << @the_patient
redirect_to patients_url
end
错误图片链接http://imgur.com/nJdyR2E(略有不同的名字..我用我的语言获取代码和变量)
感谢您的帮助和建议:)
答案 0 :(得分:0)
没有足够的信息告诉您,但您可能正在做什么
redirect_to patients_url
在您的#order
行动中,但您的意思是:
redirect_to patient_url
这将是您的#show
行动。我知道你使用的是另一种语言。也许问题是多元化错误?
如果没有,请点击这里:
您正在尝试构建未定义@temp
的索引页面。想一想,你需要索引,所以它构建了索引页面。那个时候@temp
是什么?在您点击按钮之前它不会被设置,因为#index
没有定义按钮,因此该按钮尚未存在。但即使在#order
中定义后,您也会重定向到#index
,然后重置为[]
。您需要重新构建您的应用。一个简单的黑客方法是重定向到一个新页面,该页面包含@temp
所拥有的代码,并从@temp
中引用#index
。
遵循:
patients_url -> index action -> patients_url with button press ->
order action -> order_display_url