伪关系故障客户 -> has_many -> 部门 -> has_many -> 任务 -> has_one -> 危险
在 Tasks#show 上,我目前仅在存在危险时才存在危险(由任务表格中的是/否问题确定)。如果存在,我想用条件语句显示危害,如果危害表尚未完成,则显示“填写表格”链接和“不完整”文本。以及“查看表格”和“完整文本(如果已完成危害表格)。
这是来自 app/views/tasks/show.html.erb 的代码摘录
<% if @task.Hazard_exist == 'Yes' %>
<tr>
<td>Hazard</td>
<% if @task.Hazard.nil? %>
<td><%= link_to 'Fill Out Form', new_client_department_task_Access_path(@client,@department,@task) %></td>
<td id="incomplete">Incomplete!</td>
<td class="risk_val">Form not complete</td>
<% else %>
<td><%= link_to 'View Form', client_department_task_Hazard_path(@client,@department,@task) %>
<%= link_to 'Edit Form', edit_client_department_task_Hazard_path(@client,@department,@task) %></td>
<td id="complete">Complete</td>
<td class="risk_val"><%= @task.Hazard.risk_total%></td>
<% end %>
</tr>
<% end %>
这可行,但问题是即使我“填写表格”然后点击取消数据库@task.Hazard 的行也不再为零。从而将危险表标识为“完成”。理想情况下,我想让它通过某些字段的存在来验证危害,但客户希望它能够作为“进行中”提交,所以我的计划是表单将能够在没有的情况下提交验证。但是,Tasks#show 中的条件语句将取决于 Hazard 模型中的键值不为空。
即替换这条线
<% if @task.Hazard.nil? %>
和
<% if @task.Hazard.risk_total == '' %>
但是,尝试执行此操作时出现“未定义”方法问题。
为了使用这个条件要求,这里有什么简单的工作吗?还是只是在表单上进行验证是最好的方式?