2017-02-13 3 views
0

Это мой файл html.erb .. Я получаю эту ошибкуШаблон отсутствует - рельсы

Template is missing Missing template pages/verify, application/verify with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/spritle/web-beerboard-menu/app/views" * "/var/lib/gems/2.3.0/gems/devise-4.2.0/app/views"

<%= form_tag({:controller=>"pages", :action=>"verify"}, method: :get) do %> 
    <div class="row"> 
    <div class=" col-lg-4 col-xs-4 col-sm-4 " > 
      <label for="q">Enter date of Birth</label> 
    </div> 
    </div> 
    <div class="row"> 
    <div class=" col-lg-4 col-xs-4 col-sm-4" > 
       <input id="dob" name="dob" type="date" class="form-control" required /> </div> 
    </div> 
    <div class="row"> 
    <div class=" col-lg-4 col-xs-4 col-sm-4" > 
       <%= submit_tag 'Go', name: nil %> </div> 
</div> 
    <% end %> 

это мой файл контроллер

def verify 
    currentdate = Time.now.strftime("%Y-%m-%d") 
    dateofb = Date.parse(params[:dob]).strftime("%Y-%m-%d") 
    date = (currentdate.to_date - dateofb.to_date).to_i 
end 
+1

какая строка точно бросает ошибку? покажите трассировку стека с контроллера –

ответ

2

ошибка не о разборе даты. Он говорит Template is missing.

Вы должны добавить шаблон для вашего метода verify или добавить рендер/перенаправление.

0

Вы называете Страницы # проверки и сервер должен вернуть вам ответ. Ошибка говорит о том, что вы не указали, что вернуть. Возможно, вы хотите отобразить страницу (render :action)? или redirect_to some_path? Или, может быть, вы хотите вернуть немного json с dob? то вам нужно, чтобы завершить действие контроллера с render json: {date_of_birth: date}

1

to_date требует дату в dd/mm/yyyy или yyyy/mm/dd

currentdate = Time.now.strftime("%Y-%d-%m") 
currentdate.to_date 

Но current_date находится в формате yyyy-dd-mm который вызывает

ArgumentError: invalid date

Изменить CURRENT_DATE для

currentdate = Time.now.strftime("%Y-%m-%d") 

Кроме того,

Второй вопрос вам нужно добавить pages/verify.html или pages/verify.js для verify действия PagesController

0

Ваша текущая ошибка вызвана именованием файла шаблона. Я не знаю, какой файл вы показываете своим html, но вы связываетесь, чтобы проверить, и действие, которое вы опубликовали. Если вы отправляете данные с другой страницы и хотите что-то сделать в verify -action, вам нужно будет сделать это, и у вас будет шаблон verify.html.erb, который будет отображаться впоследствии, или'redirect_to or redirect_back in your проверка`-action.

Это может выглядеть так, чтобы отправить пользователю туда, откуда они пришли, прежде чем форма подать (А возврат к root_path (Это должно, вероятно, будет что-то другое, хотя).

def verify 
    currentdate = Time.now.strftime("%Y-%m-%d") 
    dateofb = Date.parse(params[:dob]).strftime("%Y-%m-%d") 
    date = (currentdate.to_date - dateofb.to_date).to_i 
    redirect_back fallback_location: root_path 
end 

Альтернатива есть для создания views/pages/verify.html.erb для визуализации после формы-submit.

0

В контроллере, способ проверить, следует:

  • Выполните своего рода проверки и

    • если OK: сделать что-то (например, сохранение данных), а затем перенаправить
    • еще: написать вниз предупреждающее сообщение для flash [: warn], а затем перенаправить на представления, где пользователь может исправить свою ошибку.

По умолчанию, если вы не предоставите явного перенаправления, Rails попытается найти вид страницы с именем verify.html.erb в/Views/приложения/или мнения/страницы/(при условии, ваш контроллер называется Page_controller.rb).

Никогда не забывайте: Когда вы добавляете новый метод в контроллере и перенаправлять формы этого метода, вы должны предоставить явные переназначения (неудачу и успех) или использовать создать конкретный вид и использовать неявное имя конвенции.

Смежные вопросы