如何使用helper中定义的函数生成模板?

时间:2016-01-13 07:03:42

标签: ruby-on-rails ruby ruby-on-rails-4

我在application_helper

定义了一个函数
  def title(page_title)
    content_for :title, page_title.to_s
  end

和我自定义脚手架编辑模板(lib/templates/erb/scaffold/edit.html.erb

<% title "Edit " + plural_table_name.capitalize+@<%=singular_table_name %>.id.to_s %>

<%%= render 'form' %>

但是当我运行rails g scaffold subject title:string contents:text时,会出现错误:

  

&#39;模板&#39 ;:未定义的方法&#39;标题&#39;

请告诉我如何在脚手架模板中使用title来自动生成。

2 个答案:

答案 0 :(得分:3)

我认为您应该使用<%%代替<%,而不是:

<%% title "Edit " + plural_table_name.capitalize+@<%=singular_table_name %>.id.to_s %>

因为title是一个未在scaffold lib中定义的函数,并且在运行generate scaffold时没有编译。

答案 1 :(得分:0)

我觉得这里有点误会。根据{{​​3}}:

,这是一个脚手架是什么
  

Rails中的脚手架是一整套模型,数据库迁移   该模型,操纵它的控制器,查看和操纵视图   数据,以及上述各项的测试套件。

因此,当您说rails g scaffold subject title:string contents:text时,您正在创建一个模型Subject,其属性为title(类型为字符串)和contents(类型为text),以及可以用它自动创建的所有文件。

从那里,您可以在.erb文件中使用title。例如:

<% title "Edit " + plural_table_name.capitalize %>

<%= render 'form' %> 

此外,我不确定您在此处尝试做什么:plural_table_name.capitalize+@<%=singular_table_name %>.id.to_s,但我相当确定无效。