Ruby on Rails Tuesday, January 26, 2016



On Tuesday, January 26, 2016 at 8:21:21 PM UTC, Ruby-Forum.com User wrote:
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 
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

--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/103e8c11-07a4-481a-a7f7-aea9ff6d890c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment