Я реализую телефон и SIM-контролер, который состоит из пользователя, который сначала вводит номер телефона. Если введенный номер телефона находится в базе данных, эта форма исчезает, и появляется вторая форма, чтобы проверить, находится ли номер sim пользователей в базе данных. Проблема, с которой я в настоящее время сталкиваюсь, - это первый метод (def phonechecker), который отображает phone-found.js.erb, phone-not-found.js.erb и error.js.erb в порядке. Но я получаю ошибку шаблона:Render не работает над вторым методом в контроллере
Missing template phones/phone-not-found, application/phone-not-found with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :axlsx, :haml]}.
Эта ошибка появляется, когда я пытаюсь сделать то же шаблон/s снова после того, как sumbitted их sim_number, при выполнении метода simchecker.
Код ниже:
приложение/контроллеры/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 %>
конфигурации/routes.rb
post "/checkphone" => "phones#checkphone"
post "/checksim" => "phones#checksim"
resources :phones, path: '4g-promo'
Был бы очень признателен, если бы кто-то мог решить мою проблему. Благодаря!
шаблон не найден, как правило, происходит потому, что шаблон не найден: попробуйте => Render шаблон: «телефон/телефон-не-найден», или замените «-» с '_' в имени вашего файла или сделать его частичным, начиная с: '_your_file.erb' –
Просто в сторону, не связанная напрямую с вашей проблемой: вы должны использовать 'Phone.where (phone_number: x)' вместо '.where ('phone_number =?', x)'. То же самое со столбцом 'sim_number'. Если вы хотите условие 'where' с прямым равенством, просто дайте ActiveRecord хэш. – meagar