嵌套表单Rails更新

时间:2015-08-31 03:52:57

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 nested-forms

我希望它们很好,需要使用用户的个人资料及其各自的汽车进行嵌套表格。

每个用户都有自己的个人资料:

 class PerfilController < ApplicationController
      before_filter :authenticate_user!

   def index
   end

   def show
     @usuario = current_user
     @usuario.perfil ||= Perfil.new
     @perfil = @usuario.perfil
   end

  def update
     @usuario = current_user
     @perfil = @usuario.perfil
     respond_to do |format|
          if @usuario.perfil.update_attributes(perfil_params)
              format.html {redirect_to @usuario, notice: "Datos Actualizados" }
         else
              format.html {render action: "show"}
         end
      end
   end

   private
    def perfil_params
       params.require(:perfil).permit(:nombre, :apellido, :rut)

 end
 end

我希望基金确保每次用户发布汽车时,您都可以更新您的个人资料。副嵌套表格

 <%= simple_form_for(@auto) do |f| %>
   <%= f.error_notification %>

   <%=f.fields_for @perfil do |perfil_builder|%>
         <p>
         <%= perfil_builder.label :nombre %><br/>
         <%= perfil_builder.text_field :nombre %>
         <%= perfil_builder.label :apellido %><br/>
         <%= perfil_builder.text_field :apellido %>
         <%= perfil_builder.label :rut %><br/>
         <%= perfil_builder.text_field :rut %>
         </p>
     <%end%>

   <div class="form-inputs">
      <%= f.association :region %>
      <%= f.association :ciudad %>
      <%= f.association :marca %>
      <%= f.input :modelo %>
      <%= f.input :version %>
      <%= f.input :año %>
      <%= f.input :patente %>
      <%= f.association :tipo_transmision %>
      <%= f.association :combustible %>
      <%= f.association :tipo_vehiculo %>
      <%= f.association :carroceria %>
 </div>

   <div class="form-actions">
      <%= f.button :submit, :id => 'submit' %>
   </div>
 <% end %>

问题是当您想要更新时不会更改用户数据但是如果您发布文章。控制台中的错误是:未允许的参数:perfil

最好的问候朋友。

1 个答案:

答案 0 :(得分:0)

您正在向自动控制器发送请求,因此Unpermitted parameter: perfil错误并且无法更新。

您可以将其添加到Perfil控制器:

has_many: :autos
accept_nested_attributes_for: :autos

然后在视图中切换它:

<%= simple_form_for(@perfil) do |f| %>
    <%= f.error_notification %>
    <%= f.label :nombre %><br/>
    <%= f.text_field :nombre %>
    ...
    <%=f.fields_for :auto do |auto_builder|%>
        <p>
        <%= auto_builder.association :region %><br/>
    ...

有关详细信息,请参阅此页:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html