0

デバイスを介して「マスターユーザー」が1人いるアプリを構築しています。このマスター ユーザーは、追跡している従業員とアイテムのレコードを作成します。ユーザーが「アイテムをチェックアウト」したい場合、Twilio 電話番号にテキストを送信すると、そのアイテムの新しい「トランザクション」が作成され、チェックインまたはチェックアウトされます。したがって、「employees」、「items」、および「transactions」という 3 つのテーブルがあります。計画では、これらの受信テキストを傍受し、送信元の電話番号、メッセージの内容、および提供されたコードを解析します。つまり、「CI 12345」は「アイテム 12345 をチェックイン」などになります。とにかく、私はAPI をいじってトランザクション レコードを作成する前に、これらのトランザクションを Web アプリ内で手動で実行できるようにするためだけに、このようなものを足場にしています。しかし、トランザクションをアイテム (および/またはユーザー) に関連付けるのに苦労しています。トランザクションには、ブール値の「イン/アウト」値、アクションを実行している従業員と照合するための電話番号、追跡対象のアイテムに関連付けるためのアイテム番号が必要です。いわば「トランザクション表示ビュー」をロードしようとすると、「トランザクション」に対して定義されたメソッドがないというエラーが表示され続けます。ここで何が起こっているのかわかりません。このすべてにちょっと新しい、これは私の 2 番目のアプリです。次に、追跡されているアイテムに関連付けるためのアイテム番号。いわば「トランザクション表示ビュー」をロードしようとすると、「トランザクション」に対して定義されたメソッドがないというエラーが表示され続けます。ここで何が起こっているのかわかりません。このすべてにちょっと新しい、これは私の 2 番目のアプリです。次に、追跡されているアイテムに関連付けるためのアイテム番号。いわば「トランザクション表示ビュー」をロードしようとすると、「トランザクション」に対して定義されたメソッドがないというエラーが表示され続けます。ここで何が起こっているのかわかりません。このすべてにちょっと新しい、これは私の 2 番目のアプリです。

デシベル/schema.rb

    ActiveRecord::Schema.define(:version => 20130515114928) do

      create_table "employees", :force => true do |t|
        t.string   "name"
        t.string   "phone"
        t.datetime "created_at", :null => false
        t.datetime "updated_at", :null => false
      end

      create_table "items", :force => true do |t|
        t.string   "assettag"
        t.string   "description"
        t.datetime "created_at",  :null => false
        t.datetime "updated_at",  :null => false
      end

      create_table "transactions", :force => true do |t|
        t.boolean  "status"
        t.datetime "created_at", :null => false
        t.datetime "updated_at", :null => false
        t.integer  "item_id"
        t.string   "empphone"
      end

      add_index "transactions", ["item_id"], :name => "index_transactions_on_item_id"

      create_table "users", :force => true do |t|
        t.string   "email",                  :default => "", :null => false
        t.string   "encrypted_password",     :default => "", :null => false
        t.string   "reset_password_token"
        t.datetime "reset_password_sent_at"
        t.datetime "remember_created_at"
        t.integer  "sign_in_count",          :default => 0
        t.datetime "current_sign_in_at"
        t.datetime "last_sign_in_at"
        t.string   "current_sign_in_ip"
        t.string   "last_sign_in_ip"
        t.datetime "created_at",                             :null => false
        t.datetime "updated_at",                             :null => false
      end

      add_index "users", ["email"], :name => "index_users_on_email", :unique => true
      add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true

    end

app/controllers/transactions_controller.rb

    class TransactionsController < ApplicationController
      # GET /transactions
      # GET /transactions.json
      def index
        @transactions = Transaction.all

        respond_to do |format|
          format.html # index.html.erb
          format.json { render json: @transactions }
        end
      end

      # GET /transactions/1
      # GET /transactions/1.json
      def show
        @transaction = Transaction.find(params[:id])
        @description = transaction.item.description

        respond_to do |format|
          format.html # show.html.erb
          format.json { render json: @transaction }
        end
      end

      # GET /transactions/new
      # GET /transactions/new.json
      def new
        @transaction = Transaction.new

        respond_to do |format|
          format.html # new.html.erb
          format.json { render json: @transaction }
        end
      end

      # GET /transactions/1/edit
      def edit
        @transaction = Transaction.find(params[:id])
      end

      # POST /transactions
      # POST /transactions.json
      def create
        @transaction = Transaction.new(params[:transaction])

        respond_to do |format|
          if @transaction.save
            format.html { redirect_to @transaction, notice: 'Transaction was successfully created.' }
            format.json { render json: @transaction, status: :created, location: @transaction }
          else
            format.html { render action: "new" }
            format.json { render json: @transaction.errors, status: :unprocessable_entity }
          end
        end
      end

      # PUT /transactions/1
      # PUT /transactions/1.json
      def update
        @transaction = Transaction.find(params[:id])

        respond_to do |format|
          if @transaction.update_attributes(params[:transaction])
            format.html { redirect_to @transaction, notice: 'Transaction was successfully updated.' }
            format.json { head :no_content }
          else
            format.html { render action: "edit" }
            format.json { render json: @transaction.errors, status: :unprocessable_entity }
          end
        end
      end

      # DELETE /transactions/1
      # DELETE /transactions/1.json
      def destroy
        @transaction = Transaction.find(params[:id])
        @transaction.destroy

        respond_to do |format|
          format.html { redirect_to transactions_url }
          format.json { head :no_content }
        end
      end
    end

アプリ/モデル/item.rb

    class Item < ActiveRecord::Base
      attr_accessible :assettag, :description
      validates :assettag, presence: true
      validates :description, presence: true

      has_many :transactions
    end

アプリ/モデル/employee.rb

    class Employee < ActiveRecord::Base
      attr_accessible :name, :phone
      validates :phone, presence: true
      validates :name, presence: true
    end

アプリ/モデル/transaction.rb

    class Transaction < ActiveRecord::Base
      attr_accessible :status, :item_id

      belongs_to :item
      validates :item_id, presence: true

      delegate :description, to: :item
    end

app/controllers/employees_controller.rb

    class EmployeesController < ApplicationController
      # GET /employees
      # GET /employees.json
      def index
        @employees = Employee.all

        respond_to do |format|
          format.html # index.html.erb
          format.json { render json: @employees }
        end
      end

      # GET /employees/1
      # GET /employees/1.json
      def show
        @employee = Employee.find(params[:id])

        respond_to do |format|
          format.html # show.html.erb
          format.json { render json: @employee }
        end
      end

      # GET /employees/new
      # GET /employees/new.json
      def new
        @employee = Employee.new

        respond_to do |format|
          format.html # new.html.erb
          format.json { render json: @employee }
        end
      end

      # GET /employees/1/edit
      def edit
        @employee = Employee.find(params[:id])
      end

      # POST /employees
      # POST /employees.json
      def create
        @employee = Employee.new(params[:employee])

        respond_to do |format|
          if @employee.save
            format.html { redirect_to @employee, notice: 'Employee was successfully created.' }
            format.json { render json: @employee, status: :created, location: @employee }
          else
            format.html { render action: "new" }
            format.json { render json: @employee.errors, status: :unprocessable_entity }
          end
        end
      end

      # PUT /employees/1
      # PUT /employees/1.json
      def update
        @employee = Employee.find(params[:id])

        respond_to do |format|
          if @employee.update_attributes(params[:employee])
            format.html { redirect_to @employee, notice: 'Employee was successfully updated.' }
            format.json { head :no_content }
          else
            format.html { render action: "edit" }
            format.json { render json: @employee.errors, status: :unprocessable_entity }
          end
        end
      end

      # DELETE /employees/1
      # DELETE /employees/1.json
      def destroy
        @employee = Employee.find(params[:id])
        @employee.destroy

        respond_to do |format|
          format.html { redirect_to employees_url }
          format.json { head :no_content }
        end
      end
    end

app/controllers/items_controller.rb

    class ItemsController < ApplicationController
      # GET /items
      # GET /items.json
      def index
        @items = Item.all

        respond_to do |format|
          format.html # index.html.erb
          format.json { render json: @items }
        end
      end

      # GET /items/1
      # GET /items/1.json
      def show
        @item = Item.find(params[:id])

        respond_to do |format|
          format.html # show.html.erb
          format.json { render json: @item }
        end
      end

      # GET /items/new
      # GET /items/new.json
      def new
        @item = Item.new

        respond_to do |format|
          format.html # new.html.erb
          format.json { render json: @item }
        end
      end

      # GET /items/1/edit
      def edit
        @item = Item.find(params[:id])
      end

      # POST /items
      # POST /items.json
      def create
        @item = Item.new(params[:item])

        respond_to do |format|
          if @item.save
            format.html { redirect_to @item, notice: 'Item was successfully created.' }
            format.json { render json: @item, status: :created, location: @item }
          else
            format.html { render action: "new" }
            format.json { render json: @item.errors, status: :unprocessable_entity }
          end
        end
      end

      # PUT /items/1
      # PUT /items/1.json
      def update
        @item = Item.find(params[:id])

        respond_to do |format|
          if @item.update_attributes(params[:item])
            format.html { redirect_to @item, notice: 'Item was successfully updated.' }
            format.json { head :no_content }
          else
            format.html { render action: "edit" }
            format.json { render json: @item.errors, status: :unprocessable_entity }
          end
        end
      end

      # DELETE /items/1
      # DELETE /items/1.json
      def destroy
        @item = Item.find(params[:id])
        @item.destroy

        respond_to do |format|
          format.html { redirect_to items_url }
          format.json { head :no_content }
        end
      end
    end

アプリ/ビュー/トランザクション/show.html.erb

    <p id="notice"><%= notice %></p>

    <p>
      <b>Status:</b>
      <%= @transaction.status %>
    </p>

    <p>
      <b>Description:</b>
      <%= transaction.description %>
    </p>


    <%= link_to 'Edit', edit_transaction_path(@transaction) %> |
    <%= link_to 'Back', transactions_path %>
4

1 に答える 1