0

私は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 にアクセスしたいと思います。私はあなたが私を理解してくれることを願っています. 助言がありますか?ありがとう!

4

0 に答える 0