I’m a little confused by how you’re approaching the addition of the
note.
First of all, in your partial, you have:
<%= start_form_tag :action => ‘new_note’, :id => @job %>
But the action you’re showing us in the controller is
“dashboard_job_update” not “new_note”. Your action in your
start_form_tag directly correlates to what method is executed on form
submission.
Also, and this is the cause of your stringify_keys! error, :note is not
a valid option for the submit tag. Its submit_tag(value, options).
value is whatever you want the Submit button to say and options are
html-type options, such as :class or :id.
Here’s what I would do instead. In whatever controller that corresponds
to the view you’ve given us below define @job (@job =
Job.find(params[:id])) and define a new note object (@note = Note.new).
Then use the following for your view:
<%= start_form_tag :action => ‘dashboard_job_update’ %>
<%= text_area_tag “note”, nil, :size => “65x10” %>
<%= hidden_field_tag “job_ids[]”, job.id %>
<%= submit_tag “Add Note” %>
<%= end_form_tag %>
Then I’d change your controller as follows:
def dashboard_job_update
@note = Note.new(params[:note])
@note.jobs = Job.find(@params[:job_ids]) if @params[:job_ids]
if @note.save …
You might want to change your method name too because you’re not really
updating a job, you’re creating a note. Also, are you sure it is a
HABTM relationship you want? If you’re only adding each note to one
job, then note really only needs a belongs_to relationship with job
(which would require different code than above of course).
Eric S. wrote:
Hi,
I’m running round in circles again! I’m trying to save a note that has a
HABTM relationship with a job. The note is new - the job exists.
In my partial for notes I have ;
<%= start_form_tag :action => ‘new_note’, :id => @job %>
<%= text_area_tag "note", nil, :size => "65x10" %>
<%=submit_tag 'Add Note', :note => @job.note %>
<%= end_form_tag %>
Which exists on a page containing another partial with job data.
In the controller there is ;
def dashboard_job_update
@job = Job.find(params[:id])
@note = Note.new(params[:note]) <—this is line 99
@job.notes << @note
if @job.update_attributes(params[:job])…
The submitted params are;
Request
Parameters: {“commit”=>“Add Note”, “id”=>“1”,
“job”=>{“job_state_id”=>“2”, “current_action_id”=>“7”,
“job_phase_id”=>“2”, “job_wait_state_id”=>“4”},
“note”=>“xzczcxvzxcvzxc”}
The error message is;
undefined method `stringify_keys!’ for “xzczcxvzxcvzxc”:String
And the trace is ;
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:1333:in
attributes=' d:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:1188:ininitialize_without_callbacks’
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/callbacks.rb:236:in
initialize' #{RAILS_ROOT}/app/controllers/job_controller.rb:99:innew’
#{RAILS_ROOT}/app/controllers/job_controller.rb:99:in
`dashboard_job_update’
See above for line 99
Can’t find much to explain this error - can anyone help?
Kind Regards,
Eric.