Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如果嵌套中的条件有一个_Ruby On Rails 3_Nested_Nested Attributes_Conditional Statements - Fatal编程技术网

Ruby on rails 3 如果嵌套中的条件有一个

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' %> <

psuedo关系故障 客户->有很多->部门->有很多->任务->有一个->危险

在任务上#仅当危险存在时才显示危险(由任务表中的是/否问题确定)。如果存在,我想用一个条件语句显示危险,该条件语句显示“填写表格”链接,如果危险表格尚未填写,则显示“不完整”文本。以及“查看表”和“完整文本”(如果已填写危险表格)

下面是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中的条件语句将取决于危害模型中的键值是否为空

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