Kelly Felkins
2006-Apr-11 15:06 UTC
[Rails] how to do a simple update on the server from a change of a select box?
I have a list of items on a page. Each item has a select list. If someone changes the select list I would like to update the appropriate record on the server....nothing else. I suspect I am making this too difficult. I have an action on my controller for updating this value. I just tried the ''remote_function'', ah, function. It invokes the action on the controller but the the value of the select that it is connected to is not sent. I hope I am missing something simple. The controller action is: def update_status goal = Goal.find(params[:id]) goal.status = params[:goal][:status] goal.save end The relevant form part looks like this <%= select_tag(''goal[status]'', options_for_select(GoalStatus::STATES, goal.status), :onfiltered=> remote_function(:url => :update_status, :id => goal })) %> Asked another way, how can I send the value of the form element associated with the remote_function? Is there a better way to do this? Thanks -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060411/7d1bd86b/attachment.html
Kelly Felkins
2006-Apr-11 17:41 UTC
[Rails] Re: how to do a simple update on the server from a change of a select box?
I''m still working on this and still looking for help.... :-} I''ve made a few changes. Now I''m using form_remote_tag and submitting the form with an onchange event. The form does get submitted. Even though there is nothing to update on the web page I specify an :update parameter and have the action do a render_partial. The action is being called. Now the problem is that the partial gets displayed and nothing else. The output of the partial refreshes the entire page instead of updating just the specified div. Any suggestions? Now my controller method looks like this: def update_status goal = Goal.find(params[:id]) goal.status = params[:goal][:status] goal.save render :partial => ''list_row'', :locals =>{:goal => goal} end my list_row partial looks like this (some rows deleted just to keep it brief) <div id="gl_<%= goal.id -%>"> <tr> <td><%=h goal.goal -%></td> <td><%=h goal.task -%></td> <td><%=h goal.comments -%></td> <td> <%= form_remote_tag( :update => "gl_#{goal.id}", :url => { :action => ''update_status'', :id => goal}) -%> <%= select_tag(''goal[status]'', options_for_select(GoalStatus::STATES, goal.status), :onChange => ''this.form.submit()'') -%> <%= end_form_tag -%> </td> </tr> </div> On 4/11/06, Kelly Felkins <railsinator@gmail.com> wrote:> > > I have a list of items on a page. Each item has a select list. If > someone changes the select list I would like to update the appropriate > record on the server....nothing else. I suspect I am making this too > difficult. > > I have an action on my controller for updating this value. I just > tried the ''remote_function'', ah, function. It invokes the action on > the controller but the the value of the select that it is connected to > is not sent. > > I hope I am missing something simple. > > The controller action is: > > def update_status > goal = Goal.find(params[:id]) > goal.status = params[:goal][:status] > goal.save > end > > The relevant form part looks like this > > <%= select_tag(''goal[status]'', options_for_select(GoalStatus::STATES, > goal.status), :onfiltered=> remote_function(:url => > :update_status, :id => goal })) %> > > > Asked another way, how can I send the value of the form element > associated with the remote_function? > > Is there a better way to do this? > > Thanks > >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060411/10e94de3/attachment-0001.html