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