1

ユーザーダッシュボード(ダッシュボードビューとダッシュボードコントローラーによって処理される)でSimpleFormsとremote=>trueを使用しているフォームがあります。このフォームを使用すると、ユーザーはカスタムゲームルールを追加できます。ただし、Jqueryの.load()関数を介してフォームをロードしています。フォームは「ルール」ビューから読み込まれます(ルールコントローラーによって処理されます)。

ユーザーが送信ボタンをクリックしても、エラー検証は行われません。

彼女はルールコントローラーの作成アクションです。

def create
  @rule = Rule.new(params[:rule])

  respond_to do |format|
    if @rule.save
      format.html { redirect_to dashboard_path, notice: 'Rule was successfully created.' }
      format.json { render json: @rule, status: :created, location: @rule }
      format.js
    else
      format.html { render template: 'dashboard/index'}
      format.json { render json: @rule.errors, status: :unprocessable_entity }
      format.js
    end
  end
end

現在空のviewsフォルダーにcreate.js.erbというjsファイルがあります。このcreate.js.erbファイルのJSONエラーデータをなんとかして解析する必要があると思いますが、その方法がわかりません。

また、このフォームがダッシュボードビュー/コントローラーによって呼び出されているが、フォームがルールコントローラーによって処理されていることは重要ですか?

4

1 に答える 1

4

create.js.erb内で次のことを試してください

$('.error-messages').remove();
<% if @rule.errors.any? %>
  $('body').append('<ul class="error-messages"></ul>');
  <% @rule.errors.full_messages.each do |msg| %>
    $('.error-messages').append('<%= escape_javascript msg %>');
  <% end %>
<% end %>

これにより、bodyタグにエラーが追加されます。

于 2013-03-16T04:09:43.960 に答える