Hello
I do not understand how to use instance variable properly with partial
views, I am hoping someone here can enlighten me. For example
class MainController < ApplicationController
def index
@item_list = Item.find_all_item
end
def detail_display
@current_selected = @item= Item.find(params[:id])
redirect_to :action => :index
end
end
detail_display is invoked when the user clicks on an item in the list.
The variable @current_selected is not available to the partial view
invoked when the index is redirected to. How can I remedy this?
Thank you
rube_noob
On Mar 1, 8:48 pm, Rube N. [email protected] wrote:
def detail_display
@current_selected = @item= Item.find(params[:id])
redirect_to :action => :index
end
end
detail_display is invoked when the user clicks on an item in the list.
The variable @current_selected is not available to the partial view
invoked when the index is redirected to. How can I remedy this?
The key thing you need to understand here is that this is an http
redirect, ie a separate request: by the time the index action is
rendered the controller object that had the @current_selected instance
variable has been destroyed and your request is being handled by a
completely fresh controller object. If the index action needs to know
what the currently selected object is then you need to pass a
parameter to it telling it this. In this light, I’m not sure what the
point of the detail_display action is as it seems to be a complete no-
op.
Fred
Hi Fred,
Thanks for your response,
Basically what I am trying to accomplish is have to partial views in the
index page. One for the list of items and one for the details of the
selected item. In the future I hope to add new functionality to the
index page and I hope that the index method will not have to deal with
all the different actions that I add.
I understand how this is a new HTTP request and that the
@current_selected variable is lost. Is there any way I can allow the
view to see this variable without involving the index method?
rube_noob
Frederick C. wrote:
On Mar 1, 8:48�pm, Rube N. [email protected] wrote:
� � def detail_display
� � � � @current_selected = @item= Item.find(params[:id])
� � � � redirect_to :action => :index
� � end
end
detail_display is invoked when the user clicks on an item in the list.
The variable @current_selected is not available to the partial view
invoked when the index is redirected to. How can I remedy this?
The key thing you need to understand here is that this is an http
redirect, ie a separate request: by the time the index action is
rendered the controller object that had the @current_selected instance
variable has been destroyed and your request is being handled by a
completely fresh controller object. If the index action needs to know
what the currently selected object is then you need to pass a
parameter to it telling it this. In this light, I’m not sure what the
point of the detail_display action is as it seems to be a complete no-
op.
Fred
On Mar 1, 9:12 pm, Rube N. [email protected] wrote:
I understand how this is a new HTTP request and that the
@current_selected variable is lost. Is there any way I can allow the
view to see this variable without involving the index method?
Nope, you’d have to pass a parameter to the index action (although
whether manipulation of that parameter happens in the index action
itself or in a before_filter is up to you)
Fred