problem with mass asignment

Hi everyone. I'm new in ruby and recently faced with mass assignment problem. Below I attached a sample code similar to mine. Could you explain me what should I use in require method??? is it a name of model(person) or a variable name which I assign result(person = current_account.people.find(params[:id])) or maybe it should be an object attribute like @person??? Because I used various types but always have the same error. The second question - is it necessary to give the same name for private method def person_params as the name of (person_params) for db update? thx

class PeopleController < ActionController::Base

  def update     person = current_account.people.find(params[:id])     person.update_attributes!(person_params)     redirect_to person   end

  private

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

Normally it is the name of the model, as in the example shown. If you can't get that to work show us some code (just the relevant bits, should not need more than a dozen lines or so) and the error you are getting.

Colin

Colin Law wrote in post #1180931:

Hi everyone. I'm new in ruby and recently faced with mass assignment problem. Below I attached a sample code similar to mine. Could you explain me what should I use in require method??? is it a name of model(person)

Normally it is the name of the model, as in the example shown. If you can't get that to work show us some code (just the relevant bits, should not need more than a dozen lines or so) and the error you are getting.

Colin

def contact     if params.present?       item_params = params[:data]       item = Page.create(item_params)     end     render 'index/contact'   end

  private

      def item_params         params.require(:item).permit(:name,:description)       end

Attachments: http://www.ruby-forum.com/attachment/11243/1453873666654.jpg

Hi everyone. I’m new in ruby and recently faced with mass assignment

problem. Below I attached a sample code similar to mine. Could you

explain me what should I use in require method??? is it a name of

model(person) or a variable name which I assign result(person =

current_account.people.find(params[:id])) or maybe it should be an

object attribute like @person??? Because I used various types but always

have the same error.

it is the name of a key in the params hash (check your development.log to see what params you are receiving). In your example below you are checking that the params hash contains a key “person” (an error will be raised if not) and that value is a hash where the keys name and age are permitted. If you use the standard rails methods for building your form (i.e. form_for and f.text_field etc rather than text_field_tag) then rails uses the name of the model class so the argument to require will also be the name of the class

The second question - is it necessary to give the same name for private

method def person_params as the name of (person_params) for db update?

not quite sure what you mean by that.

Fred

Thank you very much. Now it is clear