我使用rails构建我的第一个应用程序,并且我还试图在其上添加一些ajax功能。我在我的根URL中有一个注册表单来创建用户但是我找不到在创建用户后显示我的成功消息的方法。我可以正确看到json响应但不能看到flash消息。我的代码中是否缺少某些内容?
# Controller
def create
@user = User.new(user_params(CREATE_PARAMS))
respond_to do |format|
if @user.save
@user.send_activation_email
format.html { flash[:info] = "Success!!"
redirect_to root_url
}
format.json { render json: @user, status: :created, location: @user }
else
format.html { render "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# application.html.erb
<body>
<div class="container">
<div class="message-notification">
<%= render 'shared/alert_messages' %>
</div>
<%= yield %>
</div>
</body>
# shared/_alert_messages.html.erb
<% flash.each do |message_type, message| %>
<%= content_tag(:div, message, class: "alert-message alert-message-# {message_type}") %>
<% end %>
# Handling errors users.coffee
$(document).on "ajax:error", "form#new_user", (event, data, status, xhr) ->
$("form#new_user").render_form_errors "user", data.responseJSON
$.fn.render_form_errors = (model_name, errors) ->
form = this
this.clear_form_errors()
$.each errors, (field, messages) ->
input = $('input[name="' + model_name + '[' + field + ']"]');
input.closest(".form-group").addClass("has-error")
input.parents(".form-group").append('<span class="help-block">' +
$.map(messages, (m) -> m.charAt(0).toUpperCase() +
m.slice(1)).join("<br />") + "</span>")
$.fn.clear_form_errors = () ->
this.find(".form-group").removeClass("has-error")
this.find("span.help-block").remove()
答案 0 :(得分:0)
我认为你必须将flash [:info]放在json块中,如
format.json { flash[:info] = "Success!!" }
而不是将其放在format.html
中