내 Rails 앱에서 단계 및 질문이 있습니다. 사용자는 모든 단계에 대해 질문을 생성 할 수 있습니다. Step.rb중첩 된 폼 모델 - 실행 조건 액션
class Step < ActiveRecord::Base
has_one :question, :dependent => :destroy
accepts_nested_attributes_for :question, :allow_destroy => :true
end
Question.rb
class Question < ActiveRecord::Base
belongs_to :step
end
내가 질문 생성하는 중첩 된 양식을 사용 :
<%= semantic_form_for [@project,@step] do |f| %>
<%= f.fields_for :question do |question_f| %>
<%= question_f.text_area :description %>
<% end %>
<% end %>
먼저, I 사용자가 실제로 질문 텍스트 영역에 텍스트를 입력하는 경우에만 새로운 질문을 만들고 싶습니다. 단계 양식에서 빈 질문을 자동으로 저장하지 못하게하려면 어떻게합니까?가 여기 내 현재 단계 컨트롤러 :
class StepsController < ApplicationController
def new
@step = @project.steps.build(:parent_id=> params[:parent_id])
@step.build_question
...
end
def create
@step = @project.steps.build(params[:step])
respond_to do |format|
if @step.save
...
end
end
둘째, 나는 새로운 질문을 만들 때 일부 루비 코드를 실행합니다. 특히, 질문이 포함 된 프로젝트의 updated_at 날짜를 업데이트하고 싶습니다. 이걸 내 컨트롤러에 넣을까요? 질문 모델에 대한 컨트롤러를 만들고 만들기 및 새 메서드를 만들려고했지만 단계 폼을 제출할 때 호출되지 않았습니다.
이것은 완벽합니다. 감사합니다. 나는 reject_if에 대해 결코 알지 못했고, 확실히 내 애플 리케이션의 다른 영역에서 그것을 사용합니다. – scientiffic