0

我正在构建一个简单的琐事应用程序,并为我的表单使用引导生成器。在我的模型的新表单和更新表单中,模型名称没有出现在我的视图中。这是代码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 尝试了这个,结果相同。

4

2 回答 2

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' %>
于 2013-06-06T16:49:03.267 回答
0

我摆脱了助手,它起作用了。不知道为什么,但这是最终代码:

<div class="page-header">
   <h1><%=t '.title', :default => 'New %{model_name}', :model_name => @model_name %></h1>
</div>
<%= render :partial => 'form' %>
于 2013-06-06T17:32:19.503 回答