我正在使用Rails 4 Ruby 2构建rails应用程序
背景
在我的节目视图中,我有一个嵌套元素显示,在这个元素中我有一个自定义按钮来更新记录。 (显示如下),我创建了if和else语句来显示按钮,或者如果单击了按钮,则显示单击按钮的时间。
问题:
我遇到的问题是,只有一个订单项存在时才能正常工作。当我添加多个订单项,并点击顶行按钮时,它会删除所有按钮,并在剩余行上显示00:00:00时间。
我希望这样,当我按下第一行上的按钮时,该按钮只会消失该订单项,其余部分将被点击。
我的观看页面
<table class="table" id="resp-tbl">
<thead>
<tr>
<td><center>UNIT</center></td>
<td><center>STATUS</center></td>
<td><center>DISPATCHED </center></td>
<td><center>RESPONDING </center></td>
<td><center>ON SCENE </center></td>
<td><center>CLEAR AT</center></td>
<td></td>
</tr>
</thead>
<tbody>
<% @respondings.each do |responding| %>
<tr>
<td><center><%= responding.user.employee_ident %></center></td>
<td><center><%= responding.status %></center></td>
<td><center><%= responding.created_at.strftime("%H:%M:%S") %></center></td>
<td><center>
<% if @respondings_true.present? %>
<%= responding.responding_tme.strftime("%H:%M:%S") %>
<% else %>
<%= link_to "Responding", unit_responding_update_call_responding_path(call_id: @call.id, id: responding.id), method: :patch, class: 'btn btn-nav btn-primary', :id => 'respond-btn' %>
<% end %>
<td><center><%= responding.on_scene_tme.strftime("%H:%M:%S") %></center></td>
<td><center><%= responding.clear_tme.strftime("%H:%M:%S") %></center></td>
<td><center><%= link_to "Remove Unit", [@call, responding], class: 'btn btn-danger btn-sm', method: :delete, confirm: "Are you sure you want to remove this unit?" %></center></td>
<td></td>
</tr>
<% end %>
</tbody>
</table>
我的自定义控制器操作:
#Custom Controller Calls
def unit_responding_update
@call = Call.find(params[:call_id])
@responding = Responding.find(params[:id])
@responding.responding_tme = DateTime.now
@responding.responding = "true"
@responding.on_scene = "false"
@responding.clear = "false"
@responding.status = "RESPONDING"
@responding.save!
respond_to do |format|
if @responding.save
format.html { redirect_to @call, notice: "Responding time successfully updated." }
else
format.html { render action: 'edit' }
end
end
end
过滤器应该在这里读取更新操作状态,只删除按钮并将其替换为responding.status = RESPONDING
我在调用控制器中将它添加到我的show方法中。
@respondings_true = @call.respondings.select{ |x| x.status == 'RESPONDING'}
就像我上面说的那样,该动作最初应该显示按钮,因为在按下更新按钮之前,状态为空白。
在此先感谢您的协助。
答案 0 :(得分:1)
<% if @respondings_true.present? %>
@respondings_true = @call.respondings.select{ |x| x.status == 'RESPONDING'}
嗯,问题是一旦你更新了一个订单项,@ response_true就会一直为真。
if语句应该基于订单项,您可以将if语句更改为
<% if responding.status == 'RESPONDING' %>