我有三个表:用户,observative_sessions和观察。
在每个相应的模型中都有
users.rb的
has_many :observative_sessions, dependent: :destroy
has_many :observations, through: :observative_sessions, dependent: :destroy
observative_sessions.rb
belongs_to :user
has_many :observations, dependent: :destroy
observations.rb
belongs_to :observative_session
belongs_to :user
在routes.rb中,我在observative_sessions中嵌套观察
resources :observative_sessions do
resources :observations
end
我显示了每个observative_session的可能观察列表,因此我创建了部分(observation / _index.html.erb)以在obender session的显示页面中呈现。
<%= render 'observations/index' %>
和创建新观察的按钮
<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#new-observation-modal">Create</button>
observative_sessions_controller.rb
def show
@q = Observation.ransack([:observative_session])
@observations = @s.result.order(params[:order]).paginate(page: params[:page]) if params[:q].present?
@observations = @s.result.order(params[:order]).paginate(page: params[:page]) unless params[:q].present?
@observation = Observation.new
end
现在我遇到了一个问题,当我尝试创建一个新的观察时,按钮调用new_modal来渲染表单
<%= render 'observations/form' %>
观测/ _form.html.erb
<%= bootstrap_form_for ([@observative_session, @observation]) do |f| %>
在这里我得到错误未定义的方法&#39; observation_path&#39; 这就是我在observation_controller.rb
中定义创建方法的方法def create
@observation = Observation.new(observation_params)
respond_to do |format|
if @observation.save
format.html { redirect_to [@observative_session, @observation], notice: 'Observation was successfully created.' }
format.json { render :show, status: :created, location: @observation }
else
format.html { render :new }
format.json { render json: @observation.errors, status: :unprocessable_entity }
end
end
端
非常感谢您的帮助。
答案 0 :(得分:0)
我的错误是关于new.html.erb的错误我通过了
<%= render 'form', observation: @observation %>
而不是
<%= render 'form', observation: ([@observative_session, @observation]) %>
并在observation_controller.rb中我必须添加
@observative_session = ObservativeSession.find(params[:observative_session_id])
@observation = @observative_session.observations.build(observation_params)
顺便说一下,在我尝试使用思考传递会话的ID
之前ObservativeSession.find(params[:id])
而应该是
ObservativeSession.find(params[:observative_session_id])