【发布时间】:2011-06-03 19:07:51
【问题描述】:
我目前在一个表单上拥有这些字段 (:name :email :password :password_confirmation :image :desktopinfo)。我也想在另一个页面上显示:image 和:desktopinfo。
第一个表单的当前代码是这样的:
<%= form_for(@user, :html => { :multipart => true }) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.label :image %>
<%= f.file_field :image %>
<%= f.label :desktopinfo, "Desktop Info" %>
<%= f.text_area :desktopinfo %>
<%= f.submit "Update" %>
<% end %>
将以下代码添加到单独的页面时,它会转到编辑页面(使用上面的代码)并且错误提示需要输入密码。
<%= form_for(@user, :html => { :multipart => true }) do |u| %>
<%= render 'shared/error_messages', :object => u.object %>
<%= u.label :image %>
<%= u.file_field :image %>
<%= u.label :desktopinfo, "Desktop Info" %>
<%= u.text_area :desktopinfo %>
<%= u.submit "Update" %>
<% end %>
这很痛苦,因为我希望无需输入密码即可更改信息(:image 和 :desktopinfo)。如您所见,我在第二个表单上将f.label 更改为u.label。这有什么区别吗?
我该怎么做呢?
谢谢!院长
更新
Users 控制器中的当前代码是:
def update
if @user.update_attributes(params[:user])
redirect_to @user, :flash => { :success => "Profile updated." }
else
@title = "Edit user"
render 'edit'
end
end
我会把@user.update_attributes!(:image => params[:image], :desktopinfo => params[:desktopinfo])放在哪里
另外,我收到了undefined local variable or methodupdate_user_path'`。
【问题讨论】:
-
不,我正在使用 RailsTutorial.org 中使用的身份验证,因为这是我在制作应用程序时学到的。
标签: ruby-on-rails ruby-on-rails-3 forms