У меня есть домашний контроллер и вы пытаетесь обновить поле таблицы с помощью другого контроллера.save_with_captcha нет в контроллере
Главная контроллер
class HomeController < ApplicationController
before_action :user_params, only: [:index]
def index
@email = Email.new(user_params)
end
def contact
end
def faq
end
def team
end
def privacy
end
def esave
if !user_params.nil?
if @email.save_with_captcha
flash[:notice] = "Thank you for registering you email address"
redirect_to :action => 'index'
else
render 'esave'
end
end
end
def user_params
params.require(:email).permit(:email, :captcha, :captcha_key) if params[:email]
end
end
Так что я пытаюсь создать новое поле Email модели в моем родном контроллере, но когда я нажимаю сохранить он бросает эту ошибку ...
App 24078 stderr: Completed 500 Internal Server Error in 3ms
App 24078 stderr:
App 24078 stderr: NoMethodError (undefined method `save_with_captcha' for nil:NilClass):
App 24078 stderr: app/controllers/home_controller.rb:37:in `esave'
У меня есть электронная почта модель с определенными валидациями, которая подобна этому
class Email < ActiveRecord::Base
apply_simple_captcha :message => "The secret Image and code were different", :add_to_base => true
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/ , :message => "Invalid Format"
конец
Так что я не understnd, почему это save_simple_captcha отсутствует, любые предложения
Вы должны определить '@ email' что-то вроде' @email = Email.find (params [: id]) ' – Pavan
, но я уже определил электронную почту в методе индекса, но как насчет валидации user_params? – user3290805
Вы также определили его в методе 'esave'. Поскольку это ** метод экземпляра ** и вам нужно определить ** экземпляры объектов ** для каждого метода экземпляра – Pavan