使用if语句Rails 4显示按钮

时间:2015-11-30 04:32:35

标签: ruby ruby-on-rails-4

我正在使用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'}

就像我上面说的那样,该动作最初应该显示按钮,因为在按下更新按钮之前,状态为空白。

在此先感谢您的协助。

1 个答案:

答案 0 :(得分:1)

<% if @respondings_true.present? %>

@respondings_true = @call.respondings.select{ |x| x.status == 'RESPONDING'}

嗯,问题是一旦你更新了一个订单项,@ response_true就会一直为真。

if语句应该基于订单项,您可以将if语句更改为

<% if responding.status == 'RESPONDING' %>