我对此代码有两个问题。首先,无论我从下拉菜单中选择什么选项,单击提交表单时都不会更新到数据库,但是当我刷新页面时,它会更新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]) 我想捕获用户选择的选项。 有什么建议?感谢。
答案 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;'...