SORU
10 NİSAN 2013, ÇARŞAMBA


İzinsiz Olarak İç İçe Geçmiş Öznitelikleri Parametreleri Raylar 4

RoR yeni duyuyorum ama 4 kalabilirler karar verdik. Belki de bu iyi bir fikir olmayabilir. Bir form iç içe öznitelikleri oluşturmak için çalışıyorum ve mücadele ediyorum.

Bu railscast http://railscasts.com/episodes/196-nested-model-form-part-1 baktım ve tek başıma benzer bir durum canlandırmaya çalışıyorum.

Bir ben varBillbirçok nesne vardırNedeniylenesneler.Nedeniylenesne de bir aittirKişi. Oluşturmak bir form istiyorumBillve onun çocuklarıAidather bir sayfa.

Uygun alanları sayfası görüntüleniyor (Kişi için hala bir açılan olmadan da olsa) ve gönderme işlemi başarılı olur. Ancak, çocuklar aidat hiçbiri veritabanına kaydedilir ve bir server hata günlüğünde oluşturulur:

İzinsiz parametreleri: dues_attributes

Bir süredir Raylar 4, veya bazı tür bir değişiklik, sadece tamamen yeni bir şey kaçırıyorum.

Sadece hatayı önce, bu günlük bu görüntüler:

Başlamış POST "/faturaları" 127.0.0.1 için 2013-04-10 00:16:37 -0700 BillsController tarafından işleme#HTML olarak oluşturabilirsiniz
Parametreler: {"utf8"=>"", ""=>"ipxBOLOjx68fwvfmsMG3FecV/s hPqUHsluBCPN2BeU=/", "bill"=>authenticity_token ui {"şirket"=>"Hiçbiri", "ay"=>"Nisan ", "yıl"=>"", "Dues_attributes"=>2013 {"0"=>{"miktar"=>"", "Person_id"=>30 "1"}, "1"=>{"miktar"=>"", "Person_id"=>30 "2"}, "2"=>{"miktar"=>"", "Person_id"=>30 "3"}}}, "işlemek"=>"Bill"} Oluşturun



İlgili kod aşağıda listelenmiştir

nedeniyle.rb

class Due < ActiveRecord::Base
    belongs_to :person
    belongs_to :bill
end


bill.rb

class Bill < ActiveRecord::Base
    has_many :dues, :dependent => :destroy 
    accepts_nested_attributes_for :dues, :allow_destroy => true
end


bills_controller.rb

  # GET /bills/new
  def new
      @bill = Bill.new
      3.times { @bill.dues.build }
  end


faturalar/_form.html.erb

  <%= form_for(@bill) do |f| %>
    <div class="field">
        <%= f.label :company %><br />
        <%= f.text_field :company %>
    </div>
    <div class="field">
        <%= f.label :month %><br />
        <%= f.text_field :month %>
    </div>
    <div class="field">
        <%= f.label :year %><br />
        <%= f.number_field :year %>
    </div>
    <div class="actions">
        <%= f.submit %>
    </div>
    <%= f.fields_for :dues do |builder| %>
        <%= render 'due_fields', :f => builder %>
    <% end %>
  <% end %>


faturalar/_due_fields.html.erb

<div>
    <%= f.label :amount, "Amount" %>        
    <%= f.text_field :amount %>
    <br>
    <%= f.label :person_id, "Renter" %>
    <%= f.text_field :person_id %>
</div>

Bills_controller GÜNCELLEŞTİRİN.rb: Bu işleri!

def bill_params 
    params.require(:bill).permit(:company, :month, :year, 
                                 dues_attributes: [:amount,
                                                   :person_id]) 
end

CEVAP
10 NİSAN 2013, ÇARŞAMBA


Öznitelik koruma alınmasında bir değişim var gibi görünüyor ve şimdi eski isteğe bağlı gem strong_parameters Raylar parçası Çekirdek oldu, çünkü denetleyici (model attr_accessible yerine) parametreler beyaz gerekir.

Bu gibi görünmelidir:

class PeopleController < ActionController::Base
  def create
    Person.create(person_params)
  end

private
  def person_params
    params.require(:person).permit(:name, :age)
  end
end

params.require(:model).permit(:fields) kullanılacak ve iç içe params.require(:person).permit(:name, :age, pets_attributes: [:id, :name, :category]) gibi bir şey öznitelikleri

Biraz daha ayrıntı Ruby edge API docs strong_parameters on github here bulunabilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014