私はRails 3.2.2にいます私はpersons_controller内に新しいperfilを作成しようとしています
class Person < ActiveRecord::Base
belongs_to :perfil, :foreign_key=>'perfil_id'
class Perfil < ActiveRecord::Base
has_one :person
person_controller 内に ad_perfil を作成しました
def ad_perfil
@person = Person.find(params[:id])
@perfil = Perfil.new
end
そして、私は2つの方法を推測しました:1)f.submitを使用する
ad_perfil.html.erb:
<%= @person.nombre %>
<%= form_for(@perfil) do |f| %>
<div class="field">
<%= f.label :nombre %><br />
<%= f.text_field :nombre %>
</div>
<%= f.submit %>
<% end %>
これにより、perfils_controller に作成するようにリダイレクトされ、そこで @persona を取得できません。
def create
@perfil = Perfil.new(params[:perfil])
@person = Person.find(params[:id])
respond_to do |format|
if @perfil.save
format.html { redirect_to @perfil, notice: 'Perfil was successfully created.' }
format.json { render json: @perfil, status: :created, location: @perfil }
@person.perfil_id = @perfil.id
@person.save
2) persons_controller に新しい定義を作成しました。
def new_perf
@perfil = Perfil.new(params[:perfil])
@person = Person.find(params[:id])
if @perfil.save
@person.perfil = @perfil
@person.update_attributes(params[:person])
redirect_to @person
end
end
そして、 f.submit を次のように変更しようとしました:
<td><%= link_to 'New Perfil', :action => "new_perf", :id=> @person.id %></td>
そして、フィールドなしで新しい perfil を作成し、もちろん、@person.perfil_id 内に perfil.id を保存しません。私がしようとしている可能性はありますか?他の方法はありますか?person.perfil_id の代わりに perfil.person_id を入れる方が簡単だと思いますが、後で person.perfil にアクセスしたいと思います。私はあなたが私を理解してくれることを願っています. 助言がありますか?ありがとう!