11

Taskと言うモデルでは、次の検証があります

 validates_presence_of :subject, :project, :user, :status

他のコントローラーを使用して、これらの検証のエラー メッセージを表示するにはどうすればよいですか。

私が使用しているCustomController内で、

Task.create(hash)

ハッシュに nil 値を渡すと、次のエラーが発生します。

 ActiveRecord::RecordInvalid in CustomController#create

 Validation failed: Subject can't be blank

コントローラーの作成アクションのコード

@task = Task.create(hash)
if @task.valid?
   flash[:notice] = l(:notice_successful_update)
else
    flash[:error] = "<ul>" + @task.errors.full_messages.map{|o| "<li>" + o + "</li>" }.join("") + "</ul>"
end
redirect_to :back

ユーザーにエラー メッセージを表示する方法。

タスク モデルは既に構築されており、適切なメッセージをレンダリングします。プラグインからその機能を使用したい。

4

2 に答える 2

8

これはうまくいくはずです

<%= form_for(@task) do |f| %>
  <% if @task.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@task.errors.count, "error") %> prohibited this task from being saved:</h2>

      <ul>
      <% @task.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
于 2012-05-10T10:16:00.563 に答える
1

編集ページ (つまり、フォーム) にエラーを表示することについて話している場合は、simple_form gem の使用を検討してください。コーディングなしでエラーが表示されます。に置き換えるだけform_forsimple_form_for、魔法が始まります...

于 2012-05-10T10:11:40.523 に答える