0

TwilioAPIにフォームを送信するために使用しているコントローラー「find_numbers」があります。ただし、送信する前に、このコントローラーのデータモデルにない2つのフォームフィールドに対して検証したいと思います。フィールドは:nameと:original_numberです。

そのため、find_numbersモデルでは、attr_accessor:name、attr_accessor:originial numberを追加して、その下でvalidatesコマンドを実行しました。

それを行い、フォームを無効として送信した後、エラーが発生します:

Routing Error

No route matches {:controller=>"phone", :action=>"new"}
Try running rake routes for more information on available routes.

なぜルーツがないと書かれているのかはわかりませんが、とにかくそれにアクセスしている理由はわかりません。find_numbersにPOSTしたい

find_numbers/新しいテンプレート

 <%= form_tag("/find_numbers", :method => "post", :id => "new_user" ) do %>
    <%= render 'shared/error_messages' %>    

    <%= label_tag(:name, "What Are You Tracking?") %>
     <%= text_field_tag(:name) %>

    <%= label_tag(:original_number, "Your Orginal Number") %>
    <%= text_field_tag(:original_number) %>


    <%= label_tag(:in_postal_code, "Near US postal code (e.g. 94117):") %>
    <%= text_field_tag(:in_postal_code) %>

    <%= label_tag(:near_number, "Near this other number (e.g. +4156562345)") %>
    <%= text_field_tag(:near_number) %>

    <%= label_tag(:contains, "Matching this pattern (e.g. 415***EPIC):") %>
    <%= text_field_tag(:contains) %>  

    <%= submit_tag("Search", :class => "btn btn-large btn-primary") %>


  <% end %>

これが私のfind_numberモデルです

class FindNumber < ActiveRecord::Base

    attr_accessor :name
    attr_accessor :original_number

    validates :name, presence: true
    validates :original_number, presence: true

end

これが私のFind_numberコントローラーです

class FindNumbersController < ApplicationController

    def new
        @user = current_user
    end

    def create
        @user = current_user
        client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)

        search_params = {}
          %w[in_postal_code near_number contains].each do |p|
            search_params[p] = params[p] unless params[p].nil? || params[p].empty?
          end

        local_numbers = client.account.available_phone_numbers.get('US').local
        @numbers = local_numbers.list(search_params)

        unless @numbers.empty?
        render 'find_numbers/show'
        else
        flash.now[:error] = "Sorry, We Couldn't Find Any Numbers That Matched Your Search! Maybe Something Simpler?"    
        render 'find_numbers/new'
        end
    end

    def show


    end

end

これを達成するための考えは大歓迎です!

編集

Routes.rbファイル

    Dct::Application.routes.draw do

  resources :users
  resources :sessions, only: [:new, :create, :destroy]
  resources :phones, only: [:new, :create, :destroy]
  resources :find_numbers, only: [:new, :create, :destroy]  

  match '/find_numbers',  to: 'find_numbers#new'  

  match '/signup',  to: 'users#new'
  match '/login',  to: 'sessions#new'
  match '/signout', to: 'sessions#destroy', via: :delete

  root  to: 'static_pages#home'

  match '/product_demo', to: 'static_pages#product_demo'

  match '/pricing', to: 'plans#index'

  match '/contact', to: 'static_pages#contact'

編集

これが、送信を押したときに何が起こったかのサーバーログです

http://stepanp.com/railserror.jpg

また、これがfind_numbers/showビューです

4

1 に答える 1

1

あなたが投稿したものから、私に疑わしいと思われる他の唯一のことは、リソース:phonesを宣言したので、おそらくPhonesController(複数形)を持っているということですが、PhoneController(特異な)。

于 2012-10-03T19:08:49.657 に答える