订单上的状态部分未反映在使用elsif的按钮输出中

时间:2017-06-30 10:31:04

标签: ruby-on-rails

我遇到的问题是,订单的按钮在通过status语句时不会根据它的elsif整数更改它的值。这是我的elsif

    <%if o.status = 1%>
        <button class="btn btn-success"><%= link_to "Accept", accept_path(id: o.id) %> </button><!-- method: :post Accept-->
    <%elsif o.status = 2 %>
        <button class="btn btn-success">"COMPLETED" </button><!--Working-->
    <%elsif o.status = 3%>
        <button class="btn btn-success">Completed </button><!--Review-->
    <%elsif o.status = 4%>
        <button class="btn btn-success">Confirm</button><!--Confirmed-->
    <%elsif o.status = 5%>
        <button class="btn btn-success">PAID</button><!--Paid-->
    <%else%>
        <button class="btn btn-success">Contact for Issues</button> <!--Contact-->
    <%end%>

目前按钮显示“Accept”/ Status:1值,无论订单的状态整数值是什么。

在为我的索引提供obj时,我使用

@orders = Order.where(user_id: nil)
@orders_user = current_user.orders

这些部分呈现为<%= render 'order', obj: @orders_user%>

我不知道为什么这不起作用但是当我将第一个if语句发送到nil而不是1时,按钮会立即显示“已完成”,这是status = 2

我如何分配状态,但.save?部分也出现了错误,但我稍后会修复此问题,但这也可能是问题所在。

   def create
       @order = Order.where(order_params).first_or_create
       @order.status = 1
    if @order.save?
        flash[:success] = "Order was successfully made"
        redirect_to root_path
    else
        #flash error
        render 'new'
   end
  end

尝试在视图中创建订单的日志是undefined method save?'为#你的意思?保存保存!`但在控制台中日志是

   Started POST "/order" for 127.0.0.1 at 2017-06-30 23:00:53 +1200
    Processing by OrderController#create as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"w3pQ3ZeluOpm0Wh9wq1h1nPZtd5zOysTJgFDrRpBpDBaSs5LYheLvO/HU6O94WFsbaugYvMYuGZNVO3bXfOPMQ==", "order"=>{"name"=>"stackoverflow", "email"=>"so@so.com", "company"=>"sososo", "event_type"=>"Birthday", "country"=>"United Kingdom", "description"=>"sososo"}, "commit"=>"Create Order"}
      Order Load (0.5ms)  SELECT  "orders".* FROM "orders" WHERE "orders"."name" = $1 AND "orders"."company" = $2 AND "orders"."email" = $3 AND "orders"."event_type" = $4 AND "orders"."country" = $5 AND "orders"."description" = $6 ORDER BY "orders"."id" ASC LIMIT $7  [["name", "stackoverflow"], ["company", "sososo"], ["email", "so@so.com"], ["event_type", "Birthday"], ["country", "United Kingdom"], ["description", "sososo"], ["LIMIT", 1]]
       (0.1ms)  BEGIN
      Order Exists (0.2ms)  SELECT  1 AS one FROM "orders" WHERE LOWER("orders"."email") = LOWER($1) LIMIT $2  [["email", "so@so.com"], ["LIMIT", 1]]
      SQL (0.5ms)  INSERT INTO "orders" ("name", "company", "email", "event_type", "country", "description", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id"  [["name", "stackoverflow"], ["company", "sososo"], ["email", "so@so.com"], ["event_type", "Birthday"], ["country", "United Kingdom"], ["description", "sososo"], ["created_at", 2017-06-30 11:00:53 UTC], ["updated_at", 2017-06-30 11:00:53 UTC]]
       (0.9ms)  COMMIT
       (0.1ms)  BEGIN
      Order Exists (0.3ms)  SELECT  1 AS one FROM "orders" WHERE LOWER("orders"."email") = LOWER($1) AND ("orders"."id" != $2) LIMIT $3  [["email", "so@so.com"], ["id", 4], ["LIMIT", 1]]
      SQL (0.4ms)  UPDATE "orders" SET "status" = $1, "updated_at" = $2 WHERE "orders"."id" = $3  [["status", 1], ["updated_at", 2017-06-30 11:00:53 UTC], ["id", 4]]
       (0.3ms)  COMMIT
    Completed 500 Internal Server Error in 14ms (ActiveRecord: 3.3ms)



    NoMethodError (undefined method `save?' for #<Order:0x007fd6416ea130>
        Did you mean?  save
                   save!):

    app/controllers/order_controller.rb:27:in `create'
      Rendering /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
      Rendering /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
      Rendered /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (2.3ms)
      Rendering /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
      Rendered /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.5ms)
      Rendering /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
      Rendered /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
      Rendered /Users/Jack/.rvm/gems/ruby-2.3.1@global/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (64.3ms)

1 个答案:

答案 0 :(得分:0)

=更改为== 您将1分配给o.status而不是比较。

  <%if o.status == 1%>
    <button class="btn btn-success"><%= link_to "Accept", accept_path(id: o.id) %> </button><!-- method: :post Accept-->
<%elsif o.status == 2 %>
    <button class="btn btn-success">"COMPLETED" </button><!--Working-->
<%elsif o.status == 3%>
    <button class="btn btn-success">Completed </button><!--Review-->
<%elsif o.status == 4%>
    <button class="btn btn-success">Confirm</button><!--Confirmed-->
<%elsif o.status == 5%>
    <button class="btn btn-success">PAID</button><!--Paid-->
<%else%>
    <button class="btn btn-success">Contact for Issues</button> <!--Contact-->
<%end%>