首页 文章

Rails请求格式化为JS,需要查找常规Rails模板

提问于
浏览
0

我试图通过 #new 动作使用javascript在一个rails部分渲染一个bootstrap模式(语法是苗条的模板,只是更干净的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文件 . 你知道如何生成这个来生成模板的默认控制器响应吗?

或许我应该坚持打高尔夫球 .

1 回答

  • 0

    通过rails约定,当您调用控制器操作时,Rails将通过自动尝试 render 具有相同名称的视图模板(位于与控制器同名的视图文件夹中)来结束它 . 在您的情况下,调用 #new 控制器操作会导致rails尝试 render 视图模板 .

    如果您希望控制器操作 render 是另一个视图模板,请使用 render "template_name" 函数执行此操作 . 如果您希望控制器操作呈现部分视图模板,请使用 render partial: "partial_name" 函数执行此操作 .

    在您的示例中,您希望 #new 操作呈现特定的部分,因此您需要使用 render partial: "partial_name" 结束 #new 操作

    (并且要清楚 - 因为你问过如何让Rails呈现模板: new.html 是一个视图模板)

    有关使用Rails' render 函数的更多信息,请参见"Layout and Rendering in Rails" Rails指南:http://guides.rubyonrails.org/layouts_and_rendering.html#using-render

相关问题