javascript - 如何在Rails中的ajax调用中的js响应中包含html标签

标签 javascript jquery ruby-on-rails ajax

我有一个用于登录我的应用程序的 Controller 方法,如下所示:

def create
  user = User.find_by(mail: params[:session][:mail].downcase)
  if user && user.authenticate(params[:session][:password])
    if user.confirmed? 
        # Stuff when login is OK
        .......         
    else
        logout
        text = I18n.t("error.login.confirmation", :link => ActionController::Base.helpers.link_to(I18n.t("button"), confirm_user_path(user), :class => 'btn btn-info'))
        @result = ActionController::Base.helpers.sanitize(text, :tags => ['br','a']).html_safe
        respond_to do |format|
            format.html { render 'new' }
            format.js { @result.html_safe }

        end
    end
  # more stuff
  .......
  end  
end

如果用户尚未确认电子邮件,我想向他显示一条消息,其中包含重新发送确认邮件的链接:

 Please confirm your signup. <br /> <br /> <a class="btn btn-info" href="/users/48/confirm_user">Re-send confirmation mail.</a>

更新:这就是渲染 View 的方式

$("p.bg-danger").html("<%= @result %>")

最佳答案

create操作中,不需要输入@result.html_safe,因为它实际上在这里什么也不做。相反,您可能希望告诉 Controller 不要渲染布局。

def create
  # ...
  respond_to do |format|
    format.html { render 'new' }
    format.js { render layout: false }

  end
end

然后,在 create.js.erb 中:

$("p.bg-danger").html('<%=j @result %>');

关于javascript - 如何在Rails中的ajax调用中的js响应中包含html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938957/

相关文章:

ruby-on-rails - rails redirect_to 发布

javascript - 在 asp-classic 中启用 javascript

javascript - 使用模板文字在 javascript 中构建多行字符串

jquery - 检查 jquery 是否已经定义

jquery - jquery 中的 switchClass 不起作用

ruby-on-rails - 在 Rails 中检测浏览器语言

javascript - 为什么 currentTarget 值为空

javascript - 如何使 Chrome 扩展弹出窗口可拖动?

javascript - 将 javascript 数组处理转换为 jQuery

ruby-on-rails - 仍然建议使用 Minitest 在 Rails 4 中测试路由吗?