Dear Sir,
I have a similar issue. Here is my code:
Add New Investment Opportunity
<%= form_for Investopp.new do |f| %>
<%= f.label :state_id %>
<%= f.collection_select :state_id,
Investopp.year_lookup(@state_ids),
:label, :value, include_blank: true %>
<%= f.label :city_id, "city" %>
<%= f.grouped_collection_select :city_id,
Investopp.year_lookup(@state_ids), :cities, :value, :id,:name,
include_blank: true %>
<% end %>
<%= link_to 'Back', investopps_path %>
<%= link_to 'Search', investopps_browsedisplay_path %>
Here is the model(investopp):
class Investopp < ActiveRecord::Base
attr_accessible :Address, :Buildingname, :Desiredinvrole, :Details,
:Prefferednoofinvestors, :Salesprice, :Weblisting, :photo, :user_id,
:state_id, :city_id, :state, :city
has_attached_file :photo, :styles => { :small => “200x200>” }
belongs_to :user
validates :Buildingname, presence: true
validates :Address, presence: true
validates :Desiredinvrole, presence: true
validates :Weblisting, presence: true
validates :Details, presence: true
has_many :states
has_many :cities
def find_state(id)
if !id || id==0
id=1
end
@states= State.find(id)
@states.name
end
def find_city(id)
if !id || id==0
id=1
end
@cities= City.find(id)
@cities.name
end
def self.year_lookup(state_ids)
#create an emptycollection to hold the LabelValue Objects
years = []
state_ids.each do |yr| y = LabelValue.new()
y.label = yr
y.value = State.find_by_id(yr).name
years.push(y)
end
years
end
def self.state_lookup(state_ids)
years = []
state_ids.each do |yr| y = State.new()
y= State.find_by_id(yr)
years.push(y)
end
years
end
end
class LabelValue
name the accessors. Label and Value
attr_accessor :label, :value
def cities
cityids=[]
state_cities=[]
investopps=Investopp.find(:all)
investopps.each do |i|
puts i.city_id
cityids <<i.city_id
end
cityids.uniq!
states=State.find_by_id(label)
cityids.each do |c|
if states.cities.find_by_id©
state_cities<< states.cities.find_by_id©
end
end
state_cities
end
end
Here is the controller:
class InvestoppsController < ApplicationController
GET /investopps
GET /investopps.json
def index
@investopps = Investopp.where(:user_id => current_user.id)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @investopps }
end
end
GET /investopps/1
GET /investopps/1.json
def show
@investopp = current_user.investopps.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @investopp }
end
end
GET /investopps/new
GET /investopps/new.json
def new
@investopp = Investopp.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @investopp }
end
end
GET /investopps/1/edit
def edit
@investopp = Investopp.find(params[:id])
end
POST /investopps
POST /investopps.json
def create
#params[:investopp][:state_id]= “gopi”
#params[:investopp][:city_id]= “33”
@investopp = current_user.investopps.build(params[:investopp])
respond_to do |format|
if @investopp.save
format.html { redirect_to @investopp, notice: 'Investopp was
successfully created.’ }
format.json { render json: @investopp, status: :created,
location:
@investopp }
else
format.html { render action: “new” }
format.json { render json: @investopp.errors, status:
:unprocessable_entity }
end
end
end
PUT /investopps/1
PUT /investopps/1.json
def update
@investopp = Investopp.find(params[:id])
respond_to do |format|
if @investopp.update_attributes(params[:investopp])
format.html { redirect_to @investopp, notice: 'Investopp was
successfully updated.’ }
format.json { head :no_content }
else
format.html { render action: “edit” }
format.json { render json: @investopp.errors, status:
:unprocessable_entity }
end
end
end
DELETE /investopps/1
DELETE /investopps/1.json
def destroy
@investopp = Investopp.find(params[:id])
@investopp.destroy
respond_to do |format|
format.html { redirect_to investopps_url }
format.json { head :no_content }
end
end
def lis
@state_names=[]
@state_ids=[]
@city_ids= []
@city_names=[]
@investopp = Investopp.find(:all)
@investopp.each do |item|
@state_names<< State.find_by_id(item.state_id).name
@state_ids<< item.state_id
@city_names<< City.find_by_id(item.city_id).name
@city_ids << item.city_id
end
puts @state_ids.uniq!{|i| i}
puts @city_ids.uniq!{|i| i}
puts "gopi"
respond_to do |format|
format.html { render "investopps/lis", :locals => { :state_ids =>
@state_ids, :city_ids => @city_ids, :investopps => @investopp } }
format.json { render json: @investopp }
end
end
def redirect
@state = State.find(:investopp [:id])
redirect_to @state
end
end
My aim is to display the selected value from the drop down list on the
other page. I tried applying the redirect method in the controller but I
am
not able to display the selected value.
Please help. I am stucked up badly. Thanks in advance.