0

我在 rails 3.2.2 我正在尝试在 person_controller Models symplify 中创建一个新的 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

我用了两种方法: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:

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,当然不要将 perfil.id 保存在 @person.perfil_id 中。有可能我正在尝试吗?还有其他方法吗?我想用 perfil.person_id 代替 person.perfil_id 会更容易,但我想稍后访问 person.perfil。我希望你能理解我,也许我对“提交”不是很了解。有什么建议么?谢谢!

4

0 回答 0