2011-10-21 34 views
0

我可以看到里面的参数中的ID在日志中,但我不能访问它在controller.Can任何机构,请告诉我怎么回事,我可以做什么?显然 @city=City.find(params[:cities][:city_id])没有做job.Thank你我如何从一个collection_select表单中获取一个id?

<%= form_for :city, :url=>{:action =>"next"} do |f| %> 
    <%= f.collection_select(:city_id, City.all, :id, :name ,:prompt=>"Select your city") %> 

    <%=f.submit "continue" %> 
    <%end%> 

首页控制器

 def next 
     @city=City.find(params[:city_id]) 
     session[:city_id] = @city.id 
     redirect_to :controller=>"parks",:action =>"show" 
     end 

在日志

 Started POST "/home/next" for 127.0.0.1 at 2011-10-21 12:16:37 -0700 
    Processing by ParkController#show as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"7VVJ9GHcU4miYLCkSt91S674GGTScor86Tcsz7O25ik=", "city_id"=>"2", "commit"=>"continue"} 
    Rendered park/show.html.erb within layouts/header (2.5ms) 
    Completed 500 Internal Server Error in 7ms 

回答

1

噢该死的我是一个白痴没有看到它在一开始。你写

@city=City.find(params[:cities]) 

但应

@city=City.find(params[:city_id]) 
+0

我只是改变像上面显示,但仍然没有工作 – katie

+0

好吧,那么请发布一个新版本的params了。 – davidb

+0

你完全确定你的数据库中有一个id = 2的城市吗? –

1

你写

<%= collection_select(nil,:city_id, City.all, :id, :name ,:prompt=>"Select your city") %> 

但是,你应该写

<%= f.collection_select(:city_id, City.all, :id, :name ,:prompt=>"Select your city") %> 

像你这样的提交按钮!其实你也可以加入这一行的表格目标:

<%= params.inspect %> 

,看看哪些值在散列被转移。

+0

谢谢你指出that.i只是改变了像你这样的建议,但仍然我不能访问它,见上面 – katie

+0

好的代码,然后重新尝试发送数据并发布params散列。 – davidb

1

嗯,也许我错了(不是一个经验丰富的Rails开发),但你不具备只写

params[:city_id] 

相关问题