加载新表单时正在创建新票证

时间:2016-02-11 05:23:06

标签: ruby-on-rails

这是我在这里的第一个问题,所以我希望我没有错误地提出这个问题。

我的门票控制器上有一个通用的新操作。每当我加载ticket / new时,它就会在DB中创建一个新项目并提交它。

这是加载页面时服务器的输出。

Started GET "/tickets/new" for ::1 at 2016-02-10 21:14:47 -0800
Processing by TicketsController#new as HTML
  Customer Load (0.4ms)  SELECT  `customers`.* FROM `customers` WHERE `customers`.`email` = 'tim@tim.com' LIMIT 1
   (0.3ms)  BEGIN
  SQL (0.5ms)  INSERT INTO `tickets` (`category`, `created_at`, `updated_at`) VALUES (3, '2016-02-11 05:14:47', '2016-02-11 05:14:47')
   (6.4ms)  COMMIT
  Rendered tickets/_new_form.html.erb (23.3ms)
  Rendered tickets/new.html.erb within layouts/application (48.4ms)
  Rendered layouts/_user_nav.html.erb (0.8ms)
  Rendered layouts/_navbar.html.erb (0.5ms)
  Rendered layouts/_flashes.html.erb (0.5ms)
  Rendered layouts/_minimal.html.erb (759.5ms)
Completed 200 OK in 893ms (Views: 822.1ms | ActiveRecord: 21.3ms)

这是来自门票控制器。

def new
    @ticket = Ticket.new
end

以下是表单的代码。

<%= form_for(@ticket, html: { class: 'form-horizontal' }) do |f| %>
  <%= f.error_notification %>
    <%= f.hidden_field(:category) %>
    <%= f.hidden_field(:severity) %>


    <br>
    <%= f.form_group :summary do |f| %>
      <%= f.label :summary, class: 'control-label col-md-2' %>
      <div class='col-md-8'>
        <%= f.text_field :summary, class: 'form-control' %>
        <%= f.error_messages %>
      </div>
    <% end %>

    <%= f.form_group :detail do |f| %>
      <%= f.label :detail, class: 'control-label col-md-2' %>
      <div class='col-md-8'>
        <%= f.text_area :detail, class: 'form-control' %>
        <%= f.error_messages %>
      </div>
    <% end %>
    <br>


  </div>

  <div class="form-actions col-md-offset-2 col-md-10">
    <%= f.submit 'Create', class: 'btn btn-primary' %>
    <%= link_to "Cancel", tickets_path, class: 'btn' %>
  </div>
<% end %>

以下是相关路线。

 resources :tickets do
    collection do
      get :step_1
      get :new_ticket
      get :billing_new_1
      get :internet_step_1
      get :internet_step_2
      get :internet_modem_reset
      get :internet_step_1
      get :internet_step_2
      get :internet_create_1
      get :internet_create_2
      get :tv_step_1
      get :tv_step_2
      get :tv_step_3
      get :tv_create_1
      get :tv_create_2
      get :tv_create_3
      get :closed
      get :sidenav
    end
    member do
      put :close
    end

    resources :notes
    resources :appointments
  end

帮助!!

- 添

2 个答案:

答案 0 :(得分:0)

INSERT INTO `tickets` (`category`, `created_at`, `updated_at`) VALUES (3, '2016-02-11 05:14:47', '2016-02-11 05:14:47')

这是从某个地方获得category3),表明某个某处的功能正在保存@ticket

我能看到的最简单的解释是你在某个地方有一个before_action。展示您的整个TicketsController

会有所帮助
#app/controllers/tickets_controller.rb
class TicketsController < ApplicationController
   before_action :set_user #-> something like this??
end

由于您是新手,您可以使路线更加简洁(multiple resources):

#config/routes.rb
methods = %i(step_1 new_ticket billing_new_1 internet_step_1 internet_step_2 internet_modem_reset internet_create_1 internet_create_2 tv_step_1 tv_step_2 tv_step_3 tv_create_1 tv_create_2 tv_create_3 closed sidenav)

resources :tickets do
  resources :notes, :appointments
  collection do
    methods.each {|method| get method }
  end
  put :close, on: :member
end

答案 1 :(得分:0)

我最终开始整个票务课程。 我认为错误是在我的HTML中。 我的猜测是,带有爆炸声的if语句导致故障单保存,因为模型上有一个带有该名称的枚举。

以下是我认为糟糕的HTML。

 <% if @ticket.category == :tv %>
          Ok. Your tv is down, but your internet is still working.
          <br>
          Do you have any more details to add? If so, add them here. If not, just hit sumbit and we will open up a ticket with all of the information that you have provided us.

          <% elsif @ticket.internet! %>
          Ok. Your internet is down, but your tv is still working.
          <br>
          Do you have any more details to add? If so, add them here. If not, just hit sumbit and we will open up a ticket with all of the information that you have provided us.

          <% elsif @ticket.billing %>
          I am fresh out of questions.
          <br>
          Do you have any more details to add? If so, add them here. If not, just hit sumbit and we will open up a ticket with all of the information that you have provided us.
          <% elsif @ticket.category == :internet_and_tv %>
          Ok. Your cable and internet are both down.'%>
          <br>
          Do you have any more details to add? If so, add them here. If not, just hit sumbit and we will open up a ticket with all of the information that you have provided us.'%>
          <% else @ticket.category == :plant %>
          <%end%>