下拉选择,选择的选项
我on Rails的版本3.我定义了下面的辅助方法的选择使用Ruby:下拉选择,选择的选项
def current_user_selector
collection_select(:user, :id, User.all, :id, :name, {:prompt => "Select a User"});
end
我在index.html.erb
导入了上述选择:
...
<%= current_user_selector %>
...
我读过的地方,从下拉菜单中选择的选项可以在控制器访问:
selected_user = params[user][id]
我已经在我的控制器的几个动作中添加了上面的行,但我不断收到异常。
目前,我有它在下列行动:
# GET /users/:id/click
# GET /users/:id/click.xml
def click
@user = User.find(params[:id])
@users_to_click = User.where("clicks_given - clicks_received >= ?", -5).order("clicks_given - clicks_received")
selected_user = params[user][id]
respond_to do |format|
format.html # click.html.erb
format.xml { render :xml => @user }
end
end
我的问题是,怎么和我得到的下拉菜单中选择用户。
那仁Sisodiya使我以下异常:
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]
PARAMS [:用户] [:ID]会给你所选用户的ID,所以你需要找到使用该ID的用户。
selected_user = User.find(params[:user][:id])
编辑:
也确保您要访问它作为PARAMS [:用户] [:编号],而不是PARAMS [用户] [ID]
更新:
您需要将选定值传递给服务器,正如您所提到的,您有一个调用点击操作的按钮。现在你可以用下拉菜单和一个提交按钮创建一个from;东西如
<%= form_tag('/click',:method=>'get') do -%>
<%= current_user_selector %>
<%= submit_tag 'Get Selected' %>
<% end -%>
它没有工作。看到我的问题上面的错误返回。 – 2011-04-30 18:53:58
如果您的下拉列表正在索引文件中呈现,那么您如何将其选定值传递给服务器?你需要将它传递给服务器。当你的点击行为被调用? – 2011-04-30 19:09:53
在索引文件中,我有一个调用点击操作的按钮。我如何将选定的值传递给服务器? – 2011-04-30 19:12:54
你可以把你的形式,你正在使用下拉? – 2011-04-30 18:57:26
下拉菜单正在呈现在'index.html.erb'中。这是在问题。 – 2011-04-30 19:01:39