2010-02-12 59 views
0

我有这个代码的两个问题。首先,无论我从下拉菜单中选择什么选项,它在点击提交表单时都不会更新到数据库,但当我刷新页面时,它会更新id 1的记录。我基本上只是想更新用户的记录从下拉菜单中选择。这个特定的下拉菜单没有关联的模型。 @user_requests与user_request的模型相同,只是使用用户站点过滤的记录。所以用户只能看到他们网站的记录。然而,他们仍然需要选择一个选项,该选项需要随参数被捕获[:编号],它是目前因某些原因:PARAMS [:ID]不工作

用户请求控制器:

def confirm 
x = current_user.contact.contactable 
@user_requests = UserRequest.find(:all, :conditions => ["location_id = ?", x]) 
    if @user_request = UserRequest.find(params[:id]) 
    update_confirm 
    end 
end 

def update_confirm 
@user_request.creator_id = current_user.contact.contactable 
@user_request.save 
end 
end 

confirm.erb形式:

<% form_for(:user_request, :url => {:action => :confirm}) do %> 
Request: collection_select(:user_request, :id, @user_requests, :id, :request_status_id) <br /> 
Password: <%= password_field_tag :password %> <br /> 
<%= submit_tag 'Confirm Request' %> 
<% end %> 

路线: map.resources:user_requests,:构件=> {:确认=>:任何}

对于该部分在这里:如果@user_reques t = UserRequest.find(params [:id]) 我想捕获用户选择的选项。 有什么建议吗?谢谢。

回答

2

您可能需要更改为以下内容:

if @user_request = UserRequest.find(params[:user_request][:id]) 
+0

是的,它的工作。它为什么有效?我以为你可以用id来执行查找。谢谢。 – JohnMerlino 2010-02-12 15:53:51

1

它的工作原理,因为你usind的:ID从的form_for声明,从一个传来:user_request对象。

collection_select(:user_request, :id, @user_requests, :id, :request_status_id) 

返回 '< '选择ID = “user_request_id” NAME =' user_request [ID]' '>' ......