2012-09-21 36 views
-1

快速Rails的問題,我會愛上你們的幫助。一直在尋找答案,所有的東西似乎都在我認爲是解決方案的更復雜的一面。我有兩個頁面使用模型(用戶)和每個頁面上的表單,當保存時更新不同的屬性。不同頁面上的條件驗證 - Rails

  • 一個更新自己的密碼信息(驗證密碼的存在)

  • 一個更新其測驗的反應(驗證爲最大值300個字符)

我該怎麼辦條件驗證,因此當我提交表單時,驗證出現在各自的頁面上?我需要兩個單獨的操作嗎?如何將這些操作鏈接到表單提交?

這裏是通用的更新動作和形式:

用戶控制器

def update 
    @user = User.find(params[:id]) 
    if @user.update_attributes(params[:user]) 
    flash[:success] = "All is updated" 
    sign_in @user 
    redirect_to @user 
    else 
    render 'edit' 
    end 
end 

<p><h3>Linked-In Optimization</h3></p> 
<%= form_for(@user) do |form| %> 
    <p><%= form.label :linkedin, 'Please copy and paste your Linked-In profile here (575 chars max.)' %></p> 
    <p><%= form.text_area :linkedin %></p> 
    <%= form.submit 'Save' %> 
    <img class="linkedin" src="/linkedin.png"> 
<% end %> 
+0

你的問題很不清楚。你可以粘貼你的所有代碼「查看頁面」和控制器代碼。 –

+0

你說得對,我應該更清楚。無論如何,感謝下面的幫助。這是我做的:在視圖中:<%= form_for(@user,:url => update_linkedin_user_path(@user))do | f | %>和路線中,我在「resources:users」下面添加了這個 - 「put'update_linkedin',:on =>:member」。 (也在控制器中創建了該動作。) – D060703

回答

0

爲了簡化問題,使用兩個單獨的控制器動作。

要連結您的表單提交新的路徑,這樣做

<%= form_for(@user, :url => update_password_user_path(@user)) do |f| %> 

如果您已經將模型中的必要的驗證,錯誤信息將出現在您相應的表格。

+0

感謝您的幫助!得到它了。 – D060703