params [:id]无效

时间:2010-02-12 14:45:31

标签: ruby-on-rails

我对此代码有两个问题。首先,无论我从下拉菜单中选择什么选项,单击提交表单时都不会更新到数据库,但是当我刷新页面时,它会更新id的记录。我基本上只想更新用户的记录从下拉菜单中选择。此特定下拉列表没有关联模型。 @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,:member =&gt; {:confirm =&gt; :任何}

这一部分就在这里:if @user_request = UserRequest.find(params [:id]) 我想捕获用户选择的选项。 有什么建议?感谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

它的工作原理是因为你是来自form_for语句的:来自a:user_request对象的id。

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

返回'&lt;'select id =“user_request_id”name ='user_request [id]''&gt;'...