Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Javascript 不管ruby if语句如何,js.erb视图都会运行所有js代码_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript 不管ruby if语句如何,js.erb视图都会运行所有js代码

Javascript 不管ruby if语句如何,js.erb视图都会运行所有js代码,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我使用rails控制器和js.erb视图中的js格式在提交表单时执行一些html更改。在这个js.erb文件中,有多个ruby if语句。所有部分都将被检索(根据Chrome网络选项卡),不管语句是真是假。在html中只执行正确的操作,但是如果我从操作中删除if语句,这些额外的js操作将导致时间接近1秒而不是54毫秒。我想知道是否有一种方法可以让js代码只在满足适当条件的情况下运行。谢谢 js.erb文件 $("#edit_time_modal_<%= @order.id %>").

我使用rails控制器和js.erb视图中的js格式在提交表单时执行一些html更改。在这个js.erb文件中,有多个ruby if语句。所有部分都将被检索(根据Chrome网络选项卡),不管语句是真是假。在html中只执行正确的操作,但是如果我从操作中删除if语句,这些额外的js操作将导致时间接近1秒而不是54毫秒。我想知道是否有一种方法可以让js代码只在满足适当条件的情况下运行。谢谢

js.erb文件

$("#edit_time_modal_<%= @order.id %>").modal("hide");
<% new_time = @order.order_start_date_time %>
<% if @order_date != @order.order_start_date_time %>
  <% end_of_day = Time.zone.now.end_of_day %>
  <% if @order_date < end_of_day && new_time < end_of_day %>
    $("#order_details_<%= @order.id %>").replaceWith('<%= j(render 'order_details', todays_order: @order) %>');
    $("#dashboard_orders_table").replaceWith('<%= j(render 'orders_table') %>');
    $("#dashboard_totals").replaceWith('<%= j(render 'dashboard_totals') %>');
    $(".select_order").replaceWith('<%= j(render 'new_delivery_select_order') %>');
  <% elsif @order_date < end_of_day && new_time > end_of_day %>
    $("#dashboard_order_row_<%= @order.id %>").remove();
    $("#dashboard_totals").replaceWith('<%= j(render 'dashboard_totals') %>');
    $("#tom_orders").replaceWith('<%= j(render 'tom_orders') %>');
    $("#tom_totals").replaceWith('<%= j(render 'tom_totals') %>');
    $(".select_order").replaceWith('<%= j(render 'new_delivery_select_order') %>');
    $("#tom_orders_date").replaceWith('<%= j(render 'tom_orders_date') %>');
  <% elsif @order_date > end_of_day && new_time < end_of_day %>
    $("#tom_order_<%= @order.id %>").remove();
    $("#tom_totals").replaceWith('<%= j(render 'tom_totals') %>');
    $("#dashboard_orders_table").replaceWith('<%= j(render 'orders_table') %>');
    $("#dashboard_totals").replaceWith('<%= j(render 'dashboard_totals') %>');
    $(".select_order").replaceWith('<%= j(render 'new_delivery_select_order') %>');
    $("#tom_orders_date").replaceWith('<%= j(render 'tom_orders_date') %>');
  <% elsif @order_date > end_of_day && new_time > end_of_day %>
    $("#tom_orders").replaceWith('<%= j(render 'tom_orders') %>');
    $("#tom_totals").replaceWith('<%= j(render 'tom_totals') %>');
    $("#tom_orders_date").replaceWith('<%= j(render 'tom_orders_date') %>');
  <% end %>
<% end %>

$("#edit_time_modal_<%= @order.id %>").replaceWith('<%= j(render 'edit_time', order: @order) %>');
if(){
//做点什么。。。
}否则{
//做些不同的事。。。
}
上述代码将在客户端运行所有代码,而不管if语句的结果如何(即,dosomething和dosomething)


//只能这样做
//只做那件事
这将仅基于if语句运行1组代码(即仅“仅执行此操作”或“仅执行此操作”)

检查
def update_order_time
    @order = Order.find(params[:order_id])
    if params[:extras].present?
      @order.update_attributes(...)
    else
      @order.update_attributes(...)
    end
    @order_date = params[:order_date]
    if Order.tomorrows_orders.present?
      @tomorrows_orders = Order.tomorrows_orders.order(:order_start_date_time)
    elsif Order.day_after_tom_orders.present?
      @tomorrows_orders = Order.day_after_tom_orders.order(:order_start_date_time)
    elsif Order.three_days_orders.present?
      @tomorrows_orders = Order.three_days_orders.order(:order_start_date_time)
    elsif Order.four_days_orders.present?
      @tomorrows_orders = Order.four_days_orders.order(:order_start_date_time)
    else
      @tomorrows_orders = []
    end
    respond_to do |format|
      format.js
    end
  end
if(<%= @order_date == @order.order_start_date_time %>) {
  // do something ...
} else {
  // do something different ...
}
<% if @order_date != @order.order_start_date_time %>
  // do this only
<% else %>
  // do that only
<% end %>