2017-02-22 15 views
0

私は最初に電話番号を入力するユーザーで構成される電話機とシムチェッカーを実装しています。入力された電話番号がデータベースにある場合、このフォームは表示されず、ユーザーのSIM番号がデータベース内にあるかどうかを確認する2番目のフォームが表示されます。 私が現在持っている問題は、最初のメソッド(def phonechecker)がphone-found.js.erb、phone-not-found.js.erbおよびerror.js.erbをレンダリングすることです。しかし、私は、テンプレートのエラーを取得しています:私はsimcheckerメソッドを実行するときに、テンプレート/ sの同じことが再び後、そのsim_numberをsumbittedたレンダリングしようとすると、レンダリングがコントローラーの2番目のメソッドで動作しません

Missing template phones/phone-not-found, application/phone-not-found with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :axlsx, :haml]}. 

このエラーが表示されます。

以下

コード:

アプリ/コントローラ/ phones_controller.rb

class PhonesController < ApplicationController 
    protect_from_forgery with: :null_session 
    def checkphone 
    @phone_number = Phone.where('phone_number = ?', params[:phone][:phone_number]) 
    if @phone_number.exists? 
     render 'phone-found' 

    elsif @phone_number.blank? 
     render 'phone-not-found' 

    else 
     render 'errors' 
    end 
    end 

    def checksim 
    @sim_number = Phone.where('sim_number = ?', params[:sim][:sim_number]) 
    if @sim_number.exists? 
     render 'phone-found' 

    elsif @sim_number.blank? 
     render 'phone-not-found' 

    else 
     render 'errors' 
    end 
    end 

    private 

    def phone_params 
    params.require(:phone).permit(
     :phone_number 
    ) 
    end 

    def sim_params 
    params.require(:sim).permit(
     :sim_number 
    ) 
    end 
end 

アプリ/ビュー/携帯電話/携帯電話-found.js.erb

$('#phone-number-found').append("<%= j render(partial: 'sim') %>") 
$('#phone-number-not-found').html(''); 
$('#phone-number-error').html(''); 
$('#phone_phone_number').hide(); 

アプリ/ビュー/携帯電話/phone-not-found.js.erb

$('#phone-number-found').html(''); 
$('#phone-number-not-found').html('Working!'); 
$('#phone-number-error').html(''); 

アプリ/ビュー/電話/ error.js.erb

$('#phone-number-found').html(''); 
$('#phone-number-not-found').html(''); 
$('#phone-number-error').html('Working!'); 

アプリ/ビュー/電話/ _sim.html.erb

<%= form_for :sim, :url => url_for(:action => 'checksim', :controller => 'phones'), remote: true, :authenticity_token => false, html: { id: 'sim-number-form'} do |f| %> 
    <div id="phone-number-found"></div> 
    <div id="phone-number-not-found"></div> 
    <div id="phone-number-error"></div> 
    <%= f.text_field :sim_number %> 
    <%= submit_tag("Check") %> 
<% end %> 

アプリ/ビュー/電話/ index.html.erb

<%= form_for :phone, :url => url_for(:action => 'checkphone', :controller => 'phones'), remote: true, :authenticity_token => false, html: { id: 'phone-number-form'} do |f| %> 
    <div id="phone-number-found"></div> 
    <div id="phone-number-not-found"></div> 
    <div id="phone-number-error"></div> 
    <%= f.text_field :phone_number %> 
    <%= submit_tag("Check") %> 
<% end %> 

のconfig/routes.rbを

post "/checkphone" => "phones#checkphone" 
    post "/checksim" => "phones#checksim" 

    resources :phones, path: '4g-promo' 

誰かが私の問題を解決できるなら、大変感謝します。ありがとう!

+0

テンプレート起こります:あなたのようなコントローラーのメソッド内respond_toメソッドを追加する必要がある=>はテンプレートレンダリングしてみてください:「電話/携帯電話--見つかりません」、または交換します「 - 」 '_your_file.erb' –

+0

あなたの問題に直接関係するものではありません:あなたは 'Phone.where(phone_number:x)'を使用していなければなりません。 '.where( 'phone_number =?'、x)'の代わりに '。あなたの 'sim_number'カラムと同じです。あなたが 'where'条件を真っ直ぐにしたい場合は、ActiveRecordにハッシュを与えてください。 – meagar

答えて

0

エラーでは、それは:formats=>[:html]のhtmlまたはその変形の1つ、:erb, :builder, :raw, :ruby, :coffee, :axlsx, :hamlを探していることがわかります。しかし、それは.js.erbを探してほしい。テンプレートが見つからないため、通常は見られない

def checksim 
    @sim_number = Phone.where('sim_number = ?', params[:sim][:sim_number]) 

    respond_to do |format| 
    if @sim_number.exists? 
     format.js {render 'phone-found'} 
    elsif @sim_number.blank? 
     format.js {render 'phone-not-found'} 
    else 
     format.js {render 'errors'} 
    end 
    end 
end 
+0

こんにちは、あなたの答えをありがとう!残念ながら、それは私が自分のメソッドに入れて試したものであるかどうかわかりません: 'ef checksim respond_to do | format | format.js {} end @sim_number = Phone.where( 'sim_number =?'、params [:sim] [:sim_number]) if @ sim_number.exists? レンダリング 'phone-found' elsif @ sim_number.blank? は、私が得た「エラー」 エンドをレンダリング end' エラーがActionControllerた「電話-見つからない」他 をレンダリング:: UnkownFormat –

+0

私はあなたがまた、ここでそれを – swaincreates

+0

をしなければならないだろうかを示すために例を更新しましたhttp://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns – swaincreates

関連する問題