Я пытающийся последующей строку коды:Rails 3.2.x визуализация другого вида шаблона с конкретным идентификатором
class AppointmentsController < ApplicationController
def create
@appointment = Appointment.new(params[:appointment])
@current_patient = @appointment.patient_id
if @appointment.save
flash[:success] = "Appointment scheduled!"
redirect_to patient_path(@current_patient)
else
render 'patients/show'
end
end
Это происходит через три контроллера в настоящее время. Два из них кажутся важными.
class Appointment < ActiveRecord::Base
attr_accessible :appointment_date, :appointment_notes, :appointment_time, :procedure_id, :patient_id
belongs_to :patient
belongs_to :procedure
validates :procedure_id, presence: true
validates :patient_id, presence: true
validates :appointment_date, presence: true
validates :appointment_time, presence: true
class Patient < ActiveRecord::Base
attr_accessible :address1, :address2, :city, :comment, :email, :first_name, :init_date, :init_time, :last_name, :mobile, :notes, :phone, :state, :zip
before_validation :upcase_patient
before_save { self.email.downcase! }
has_many :appointments, dependent: :destroy
has_many :procedures, through: :appointments
Мой метод создания работает замечательно. Однако, когда я отправляю данные и не передаю проверки в назначениях, он должен отображать правильную страницу app.dev/patients/:id, где: id - текущая страница, с которой я работаю. Образец, о котором идет речь, является тем, который создает встречу (через представление «Пациенты/шоу»). Когда отправляются неверные или нулевые данные и присутствует: true требуется. Мне нужна одна и та же страница для рендеринга. То, что я в настоящее время получаю:
RSpec
ActionView::Template::Error:
undefined method `first_name' for nil:NilClass
# ./app/views/patients/show.html.erb:1:in `_app_views_patients_show_html_erb__4137167421928365638_70201005779320'
# ./app/controllers/appointments_controller.rb:11:in `create'
Я подозреваю, что это имеет отношение к возможности соответствующим образом настроить рендер на правильном пути, в частности, назвать правильный пациента/идентификатор. Любая помощь будет принята с благодарностью.
, который хорошо работает. Спасибо, но задали переменные 'private', а не' protected', как вы рекомендовали. В целом это получилось хорошо! Ура! – sandovalg