1

localというモデルがあります。このモデルには、次のような多くのポータルがあります。

class Portal < ActiveRecord::Base
    belongs_to :local, :class_name => "Local"   
end

class Local < ActiveRecord::Base
    has_many :portales, :class_name => "Portal", :dependent => :destroy
    accepts_nested_attributes_for :portales, :allow_destroy => true
end

問題は、パラメーターをローカルに割り当てると、コンソールに次のように表示されることです。

NoMethodError Exception: undefined method `portal' for #<Local:0x007f9cd50a7f20>

これが私のコントローラーと私のフォームです:

コントローラ:

def new_portal
    @local = Local.new
    if request.post?
        @local.update_attributes params[:local]
    end
end

形:

<%= form_for @local, :url => {:action => 'new_portal'}, :html => {:id => 'formulario_local', :multipart => true, :method => 'post'} do |f| %>
    <%= f.fields_for :portal do |portal_form| -%>
      <div id="porcentaje_barra">
        <%= portal_form.select 'opacidad_barra', generate_options_from_hash(@porcentaje_opacidad) %>
      </div>
      <div id="texto_barra">
        <%= image_tag 'editor/texto.png', :size => '30x30'%>
        <h5>Texto</h5>
      </div>
      <div id="tipo_de_letra_barra">
        <%= portal_form.select 'tipo_letra_barra', generate_options_from_hash(@tipos_de_letra),:prompt => 'Selecciona' %>
      </div>
      <div id="estilo_fuente_barra">
        <%= portal_form.select 'estilo_letra_barra', generate_options_from_hash(@estilo_de_letra), style: 'width:70px'%>
      </div>
      <div id="tam_fuente_barra">
        <%= portal_form.select 'tamano_letra_barra', generate_options_from_hash(@tamano_de_letra), style: 'width:50px'%>
      </div>
    <% end %>
<% end %>

そして、ここに私の抑揚があります:

ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'usuario', 'usuarios'
inflect.irregular 'producto', 'productos'
inflect.irregular 'portal', 'portales'
inflect.irregular 'local', 'locales'
end

何が問題なのかわかりません。ビューにはすべてのフォームが表示されます。

助けてくれてありがとう(そして私の英語でごめんなさい)、

ホルヘ--

4

1 に答える 1

1

初め、

<%= f.fields_for :portal do |portal_form| -%>

<%= f.fields_for :portales do |portal_form| -%>
于 2012-08-20T20:50:31.573 に答える