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 に答える