我正在构建一个简单的琐事应用程序,并为我的表单使用bootstrap生成器。在我的模型的新表单和更新表单中,模型名称未显示在我的视图中。这是app/views/questions/new.html.erb
的代码:
<div class="page-header">
<h1>
<%=t '.title', :default => [:'helpers.titles.new', 'New %{model}'], :model => @model_name %>
</h1>
</div>
<%= render :partial => 'form' %>
这是我的questions_controller.rb
:
class QuestionsController < ApplicationController
...
def new
@model_name = Question.model_name.human
@question = Question.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @question }
end
end
...
private
def question_params
params.require(:question).permit(:body)
end
end
单词New
出现在视图中,但不出现在模型名称中......
有谁知道这里发生了什么?
FWIW我用2.0和1.9.3尝试了相同的结果。
答案 0 :(得分:2)
在视图中定义内容是一个非常糟糕的主意。如果必须这样做,请将其移至控制器中。
# app/controllers/questions_controller.rb
class QuestionsController < ActionController::Base
def new
@question = Question.new
end
end
# config/locales/questions/en.yml
helpers:
titles:
new: new %{model}
# app/views/questions/new.html.erb
<div class="page-header">
<h1><%= I18n.t('helpers.titles.new', model: @question.class.human) %></h1>
</div>
<%= render :partial => 'form' %>
答案 1 :(得分:0)
我摆脱了帮手,它起作用了。不知道为什么,但这是最终的代码:
<div class="page-header">
<h1><%=t '.title', :default => 'New %{model_name}', :model_name => @model_name %></h1>
</div>
<%= render :partial => 'form' %>