模型名称不显示在Rails视图中

时间:2013-06-06 16:36:14

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

我正在构建一个简单的琐事应用程序,并为我的表单使用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尝试了相同的结果。

2 个答案:

答案 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' %>