我在 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。我希望你能理解我,也许我对“提交”不是很了解。有什么建议么?谢谢!