当前位置: 首页 > 面试题库 >

Rails:使用控制器渲染js.erb模板

鲁阳焱
2023-03-14
问题内容

我有一个Rails应用程序尝试合并一些AJAX,在其中单击“新建”将打开一个模式窗口和一个表单。我希望能够显示验证错误(如果失败),因此在我的create动作中,我考虑过重新呈现new.js.erb文件。这是正确的方法吗?

def create
    @place = Place.new(params[:place])
    if @place.save
       redirect_to places_path, :notice => "Successfully created place"
    else
       render "new.js.erb"
    end
end

我得到的结果是浏览器中的转义js文本,例如:

$("#new_grouping").html("<div class=\"modal-header\">\n  <a class=\"close\" data-   dismiss=\"modal\">×<\/a>\n  <h3>Create a new menu section<\/h3>\n<\/div>\n<form accept-charset=\"UTF-8\" action=\"/places/1-mama-s-pizza/groupings\" class=\"simple_form new_grouping\" id=\"new_grouping\" method=\"post\" novalidate=\"novalidate\">

我尝试将各种选项放入渲染块,但没有运气。有小费吗?


问题答案:

最好的做法是同时支持AJAX和Non-AJAX调用,以防用户出于任何原因关闭了javascript。

def create
  @place = Place.new(params[:place])

  respond_to do |format|
    if @place.save
      format.html { redirect_to places_path, :notice => "Successfully created place" }
      format.js   # renders create.js.erb, which could be used to redirect via javascript
    else
      format.html { render :action => 'new' }
      format.js { render :action => 'new' }
    end
  end
end

render :action => 'new'实际呈现控制器动作的模板new,其结果new.html.erb分别new.js.erb取决于它是否是一个非AJAX或AJAX调用。

输入new.js.erb您的ERB / javascript代码:

$("#new_grouping").html("<%= escape_javascript(...) %>">


 类似资料:
  • 问题内容: 如何从不属于将要渲染到的视图的控制器中渲染? 例如: 如何从页面渲染页面视图? post_controller.rb 问题答案: 似乎有几种方法可以实现此目的: 您如何使用Ruby onRails响应控制器中的另一个js文件? 在Rails中渲染红宝石的替代视图

  • 模板渲染 在控制器里面模板渲染,可以使用基类封装好的 fetch 方法; ThinkCMF5 设置的模板文件名分隔符是/,模板后缀名为html 常见 fetch 调用方法如下: 1.不带任何参数: return $this->fetch(); 系统会按照默认规则自动定位模板文件,其规则是: 当前主题目录/当前应用/当前控制器(小写+下划线)/当前操作(小写)+.html 2.指定渲染当前控制器

  • 模板渲染 在控制器里面模板渲染,可以使用基类封装好的 fetch 方法; ThinkCMF6.0 设置的模板文件名分隔符是/,模板后缀名为html 常见 fetch 调用方法如下: 1.不带任何参数: return $this->fetch(); 系统会按照默认规则自动定位模板文件,其规则是: 当前主题目录/当前应用/当前控制器(小写+下划线)/当前操作(小写)+.html 2.指定渲染当前控

  • 问题内容: 我有一种通过remote => true将行添加到数据库的表单。然后,我想将新数据追加到表中,但是无法获取正确的视图来呈现。 到目前为止,它正在为新条目渲染整个show.html.erb页面,但是我想布局一个最小版本以作为添加。有没有一种快速的方法来告诉我的控制器,将其插入数据库后呈现什么视图?我想渲染我的部分名为_newly_added.html.erb 我的控制器 谢谢!! 编辑

  • 问题内容: 我正在尝试在angularjs中实现一个插件系统,该系统将允许用户配置他们将在特定页面上看到的“小部件”。每个窗口小部件均由控制器和模板(URL)定义。是否可以创建一个实例化控制器,使用模板调用它并包含结果内容的指令? 目标是这样的: 问题答案: 有两种方法可以做到这一点; 一种是使用已经可用的helper指令(例如和),第二种是手动的;手动版本 可能 会更快,但我不确定。 简单方法:

  • 我正试图将发送通知电子邮件与导致它们的事件分离开来。到目前为止,我正在将一个邮件对象()从控制器传递给Akka actor(),然后它通过play mailer插件的play easymail包装发送邮件。邮件正文由邮件对象在传递给参与者后生成,HTML由Scala模板生成。 此模板包含带有绝对URL的链接,通过调用 但是,在尝试呈现模板时,我遇到了RuntimeException。 堆栈跟踪如下