0

(name:string)患者の名前のモデルと治療の別のモデルを使用して、簡単なデモ サイトを作成しました(content:text)accepts_nested_attributefor タグと fields_for タグについて詳しく知るために、この「プロジェクト」を作成しました。ここで私の問題は、患者の表示ページで、ここでわかるように、治療用のネストされた式を作成したことです。

<p id="notice"><%= notice %></p>

<p>
<b>Name:</b>
    <%= @patient.name %>
</p>

<ol>
  <% for treatment in @patient.treatments %>
     <li><%= treatment.content %></li>
   <% end %>
</ol>

<%= form_for(@patient) do |f| %>

<%= f.fields_for :treatments do |builder| %>

<div class="field">
   <%= builder.label :content %><br />
   <%= builder.text_field :content %>
</div>
<% end %>

<div class="actions">
  <%= f.submit %>
</div>
<% end %>

<%= link_to 'Edit', edit_patient_path(@patient) %> |
<%= link_to 'Back', patients_path %>

だから私の問題は、builder.text_field :contentより良いと呼ばれる入力が から最後に保存された治療を表示すること<%= builder.content %>ですが、私は彼がそれを更新しないようにしたいのですが、代わりに新しい治療を追加したいのです! うまくいけば、誰かが私を理解してくれます!ありがとう

4

1 に答える 1

1

のみを作成するための別のコントローラーを作成しtreatmentます。

# treatments_controller.rb
class TreatmentsController < ApplicationController

  def create
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.new(params[:treatment])
    if @treatment.save
      redirect_to @patient
    else
      # handle unsuccessful treatment save
    end
  end
end

# routes.rb:
resources :patients do
  resources :treatments, only: :create
end

# form:
<%= form_for @patient, @treatment do |f| %>
  <div class="field">
    <%= f.label :content %><br />
    <%= f.text_field :content %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

次のように、アクションに@treatment変数も設定する必要があります。patient#show

@treatment = @patient.treatments.new
于 2013-06-16T13:53:34.630 に答える