【问题标题】:Application layout not applied to form应用程序布局未应用于表单
【发布时间】:2017-11-03 18:59:17
【问题描述】:

在 app/controllers/fw_exports_controller.rb 中,我有:

def import_spreadsheet
  @followeds = Followed.all.order(:screen_name)
  @import_spreadsheet = FwExport.new
  render partial: 'fw_exports/import_spreadsheet'
end

在 app/views/layouts/application.html.slim 中,我有:

doctype html
html
  head
    meta content=("text/html; charset=UTF-8") http-equiv="Content-Type" /
    meta content="width=device-width, initial-scale=1.0" name="viewport" /
    title= content_for?(:title) ? yield(:title) : t('project_name')
    meta content=("#{content_for?(:description) ? yield(:description) : t('project_name')}") name="description" /
    = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
    = javascript_include_tag 'application', 'data-turbolinks-track' => true
    = csrf_meta_tags
  body
    header
      = render 'layouts/navigation'
    main role="main"
      = render 'layouts/messages'
      = yield
      = render "layouts/footer"

在 app/views/layouts/_navigation.html.slim 中,我有:

nav.navbar.navbar-default role="navigation"
  .container
    .navbar-header
      a.navbar-brand href="#"
        = t('parnassus_tools_home')
    .navbar-left
      ul.nav.navbar-nav
        li
          a
          = link_to t('menus.upload_file'), import_spreadsheet_path

在 app/views/fw_exports/_import_spreadsheet.html.slim 中,我有:

.container
  h1
    = t('fw_exports.choose_file_to_upload')
  = form_tag process_imported_spreadsheet_path, html: { multipart: true }
    .form-group
      = file_field_tag :import_file
    - if !@followeds[0].nil?
      .form-group
        = select_tag "followed_id", options_from_collection_for_select(@followeds, "id", "screen_name", "1")
    .form_group
      .sr-only
        = label_tag t('fw_exports.screen_name_to_add')
      = text_field_tag :screen_name_addition, placeholder: t('fw_exports.screen_name_to_add')
    = button_tag(type: 'submit', class: "btn btn-primary") do
      i.icon-ok.icon-white
      = t('fw_exports.import')    

在app/views/landings/index.html.slim,我有(这是主页):

h1 Home Page
p test text

这是我在主页上看到的内容:

但是当我从主页单击上传文件菜单项时,我看到的是:

为什么应用程序布局没有应用于表单?

【问题讨论】:

  • 请发布import_spreadsheet_path的控制器
  • 编辑我的问题并将其添加到顶部
  • 这是因为您正在渲染为部分。我会发布一个答案。另外,this answer 可能会有所帮助。

标签: ruby-on-rails twitter-bootstrap sass


【解决方案1】:

您需要渲染为模板而不是部分。首先,创建一个视图模板:

app/views/fw_spreadsheet/import_spreadsheet.html.slim

= render 'fw_exports/import_spreadsheet_form'

接下来,通过将 app/views/fw_spreadsheet/_import_spreadsheet.html.slim 的名称更改为 app/views/fw_spreadsheet/_import_spreadsheet_form.html.slim 来重命名您的部分

最后,如下修改你的控制器:

app/controllers/fw_exports_controller.rb

def import_spreadsheet
  @followeds = Followed.all.order(:screen_name)
  @import_spreadsheet = FwExport.new
  render 'fw_exports/import_spreadsheet'
end

【讨论】:

  • 问题是渲染部分,正如你所建议的。我只是将我的 _import_spreadsheet.html.slim 重命名为 import_spreadsheet.html.slim 并删除了带有 _ 的那个,并修改了控制器。现在可以了。我仍然需要弄清楚为什么占位符会搞砸(请参阅我发布的图片)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多