【发布时间】:2016-09-08 22:13:42
【问题描述】:
我正在尝试通过使用 javascript 的 #new 操作在 rails 部分呈现引导模式(语法是苗条的模板,只是更清洁的 erb)。
= link_to 'ADD NEW', new_hiring_site_path, {:style=>'color:#FFFFFF;', data: { toggle: "modal", target: "#hiring_site_modal"}}
这是#new 动作呈现的部分内容:
#hiring_site_modal.modal.fade tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false"
.modal-dialog
.modal-content
.modal-header
#hiring_site_modal_header.h4.modal-title
.modal-body.address-section
.form-group.hidden
input type="hidden" id="hiring_site_id" name="hiring_site_id" value='0'
.form-group
label for='hiring_site_address_line_1' Address Line 1
input.form-control.input-lg.address_line_1.required.input-length-long type="text" id='hiring_site_address_line_1' name='hiring_site_address_line_1'
...
这是我的控制器操作:
def new
@site = HiringSite.new({})
respond_to do |f|
f.html
end
end
现在,当我提交这样的请求时,我得到的响应是:
[Request Summary] {:method=>"GET", :path=>"/hiring_sites", :format=>:html, :controller=>"HiringSitesController", :action=>"index", :status=>200, :duration=>2083.21, :view=>1979.28, :db=>2.84, :application=>"enrollment-rails-app", :rails_env=>"development"
当我在链接助手中将路由更改为 html 格式时:
= link_to 'ADD NEW', new_hiring_site_path(format: 'html'), {:style=>'color:#FFFFFF;', data: { toggle: "modal", target: "#hiring_site_modal"}}
然后客户端最终会寻找一个 new.html 文件。你知道我是如何得到这个来生成渲染模板的默认控制器响应的吗?
或者我应该坚持打高尔夫球。
【问题讨论】:
-
我不确定我是否正确理解了您的问题,您的意思是:“我如何让它生成渲染特定部分的默认控制器响应?” :
render partial: "partial_name" -
如何让它生成寻找我的模板而不是寻找 JS 或 .html 的响应
-
您的模板(部分视图)是用 HTML 编写的。它的文件名是什么?我个人不使用 slim,但一些快速搜索告诉我,您的部分名称应该是“partial_name.html.slim”。您应该有一个 gem 可以在运行时自动将 slim 文件转换为适当的 HTML 文件(Rails 带有 ERB 支持,但您需要通过 gem 添加 Slim 支持)。这意味着 Rails 将在运行时查找并找到“partial_name.html”。
标签: javascript ruby-on-rails twitter-bootstrap