-1

Rails に関する簡単な質問です。皆さんの助けを借りたいと思います。答えを探し回っていますが、そこにあるすべてのものは、私が解決策だと思うものに対して少し複雑なようです. モデル (ユーザー) を使用する 2 つのページと、保存時に異なる属性を更新する各ページのフォームがあります。

  • 1 人がパスワードの詳細を更新します (検証はパスワードの存在に関するものです)

  • クイズの回答を更新します (検証は最大 300 文字です)。

フォームを送信すると、それぞれのページに検証が表示されるように、条件付き検証を行うにはどうすればよいですか? 2 つの別々のアクションが必要ですか? これらのアクションをフォーム送信にリンクするにはどうすればよいですか?

一般的な更新アクションとフォームは次のとおりです。

ユーザーコントローラー

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 %>
4

1 に答える 1

0

物事を単純化するために、2つの別々のコントローラーアクションを使用します。

フォーム送信を新しいパスにリンクするには、これを行います

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

モデルに必要な検証を追加した場合、エラーメッセージがそれぞれのフォームに表示されます。

于 2012-09-21T04:37:56.063 に答える