Ruby on rails 3 如果嵌套中的条件有一个
psuedo关系故障 客户->有很多->部门->有很多->任务->有一个->危险 在任务上#仅当危险存在时才显示危险(由任务表中的是/否问题确定)。如果存在,我想用一个条件语句显示危险,该条件语句显示“填写表格”链接,如果危险表格尚未填写,则显示“不完整”文本。以及“查看表”和“完整文本”(如果已填写危险表格) 下面是app/views/tasks/show.html.erb中的代码摘录Ruby on rails 3 如果嵌套中的条件有一个,ruby-on-rails-3,nested,nested-attributes,conditional-statements,Ruby On Rails 3,Nested,Nested Attributes,Conditional Statements,psuedo关系故障 客户->有很多->部门->有很多->任务->有一个->危险 在任务上#仅当危险存在时才显示危险(由任务表中的是/否问题确定)。如果存在,我想用一个条件语句显示危险,该条件语句显示“填写表格”链接,如果危险表格尚未填写,则显示“不完整”文本。以及“查看表”和“完整文本”(如果已填写危险表格) 下面是app/views/tasks/show.html.erb中的代码摘录 <% if @task.Hazard_exist == 'Yes' %> <
<% 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中的条件语句将取决于危害模型中的键值是否为空
i、 e.更换此线路
<% if @task.Hazard.nil? %>
与
然而,我在尝试这样做时遇到了“未定义”方法问题
为了使用这个有条件的要求,这里有什么简单的工作吗?或者只是在表单上进行验证是最好的方式 如果客户希望能够在提交过程中提交此文件,那么您将无法得到您想要去的地方,只是检查是否存在。相反,在需要提交的模型上添加一个
complete:boolean
属性,然后允许用户或在回调中设置这些属性
例如,一个好方法是在表单底部提供两个按钮:
= submit_tag "Save as Draft"
= button_tag "Save as Complete", :type => "button", :id => "complete"
然后,您可以调用一个脚本,该脚本在按钮#complete
上执行单击事件,添加一个隐藏字段complete=true
,并提交表单
该脚本可能如下所示:
$('button#complete').click( function(event) {
event.preventDefault();
$('form#my_form').append('<input type="hidden" name="hazard[complete]" value="true">').submit();
});
你的意思是
@task.hazard
和@task.access
,对吗?不,我的意思是,你在叫hazard
而不是hazard
,对吗<代码>危险是一个等级。。。我不知道你这样称呼会得到什么,但你肯定想要属于task的hazard实例,即task.hazard
啊,是的。我理解。好电话。不幸的是,我的问题是,我计算的风险总和的值默认为0。我不确定我的方法是否有效。我只是想澄清一下。我会在表单中添加一个隐藏字段。然后我会使用Jquery或javascript调用在按下complete按钮时检查它是否完成?
$('button#complete').click( function(event) {
event.preventDefault();
$('form#my_form').append('<input type="hidden" name="hazard[complete]" value="true">').submit();
});
if @task.hazard.complete