не может массово назначить защищенный атрибут - PullRequest
1 голос
/ 16 февраля 2012

нужна помощь с некоторыми ассоциациями в моем приложении rails.Получите предупреждение «Не удается массово назначить защищенные атрибуты: rss_readers» и не выясните, в чем проблема.

class Scraper < ActiveRecord::Base
  attr_accessible :name, :link, :rss_reader_attributes

  has_one :rss_reader
  accepts_nested_attributes_for :rss_reader

И ассоциация:

class RssReader < ActiveRecord::Base
  attr_accessible :title, :address, :content 

  belongs_to :scraper

На рельсахконсоль работает нормально.

> scraper = Scraper.new 
> scraper.build_rss_reader 
> scraper.attributes={:rss_reader_attributes=>{:address => "asdsad"}}

Но в контроллере я получаю предупреждение.

  def new
    @scraper = Scraper.new
    @scraper.build_rss_reader
  end

  def create
    @scraper = Scraper.new(params[:scraper])
    @scraper.build_rss_reader

    if @scraper.save
      redirect_to :show
    else
      render :new
    end

И вот новый взгляд

<%= form_for(@scraper) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <%= f.fields_for(@scraper.rss_reader) do |rss| %>
     <div class="field">
         <%= rss.label :address %><br />
         <%= rss.text_field :address %>
     </div>
  <% end %>
  <div class="actions">
    <%= f.submit "Submit" %>
  </div>
<% end %>

Я думаю, все в порядкено я получил предупреждение.У кого-нибудь есть идея?

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

В основном, когда вы говорите что-то, чтобы быть доступным атрибутом, тогда вы не можете массово назначить этот конкретный атрибут ... так что ошибка, которую вы получаете, является правильной.Вы не можете выполнить object.update_attributes

what you can try is do 
@rssreader = rssreader.new
@rssreader.address = 'the address'
and then 
@scrapper.rssreader = @rssreader

. Обращайтесь к нему, чтобы лучше понять attr_accessible Определение массового назначения Rails и использование attr_accessible

2 голосов
/ 16 февраля 2012

На основании этого вам может понадобиться явно добавить RssReader к :attr_accessible.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...