我當前有這些字段(:name :email :password :password_confirmation :image :desktopinfo
)在一個窗體上。我想在另一頁上有:image
和:desktopinfo
。Rails 3類似的窗體在不同的頁面上
第一種形式目前的代碼是這樣的:
<%= 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
。這有什麼區別嗎?
我該怎麼做呢?
謝謝!院長
UPDATE
在用戶控制當前的代碼是:
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 method
update_user_path'`。
你在使用Devise嗎? – David 2011-06-03 21:17:40
不,我正在使用RailsTutorial.org中使用的身份驗證,因爲這是我在製作應用程序時學到的。 – 2011-06-04 16:52:57