1

Ideaクイックオブジェクトを作成するためのtext_areaフォームがあります。このフォームはサイトの多くの部分に表示されるので、shared/_idea_form.html.hamlファイルとして移動します。

私は現在、フォームが存在するすべてのコントローラーアクションで、@ideas = Idea.newそれを機能させるために新しいオブジェクトを定義しています。

@ideas = Idea.new各アクションの外側を定義する、より便利でグローバルな方法はありますか?つまり、アプリケーションコントローラーのbefore_filterとして。それがこれに対する正しいアプローチであるかどうかはわかりません。

4

4 に答える 4

1

あなたはそれを直接視野に入れることができます

  <%= form_for @idea ||= Idea.new do |f| %>
     #your text area
    <%end%>
于 2012-04-26T21:07:01.477 に答える
0

app/controllers/application_controller.rbで:

class ApplicationController < ActionController::Base
  before_filter :create_new_idea

  def create_new_idea
    @idea = Idea.new
  end
end

これは@idea、リクエストごとに新しいオブジェクトに設定されます。@idea新しいインスタンスに設定したくない場合や、まったく設定したくない場合もあるはずです。その場合、いくつかのオプションがあります。

class ApplicationController < ActionController::Base
  before_filter :create_new_idea, lambda {|controller| controller.set_new_idea?}

  def create_new_idea
    @idea = Idea.new
  end

  def set_new_idea?
    # this should be false in some case
  end
end
于 2012-04-27T03:24:09.700 に答える
0

はい、ほとんどのアクションにそれがある場合、それは良い方法です。もし私があなたの立場だったら、ルールにブレーキをかけ、部分的にそれを行うと思います... ルールが意味をなさない場合があり、今回はその1つです。すべてのページにフォームが必要なだけなので、フォームの新しいアイデアを常に作成する必要があります。または、部分的にそれを行うか、ヘルパーなしでフォームを作成します。

ただ一つの意見:)

于 2012-04-26T21:10:14.200 に答える
0

多くのオプションがあります: decent_exposuregem を使用する (試してみてください、クールです!)、before_filterの値を設定するために s を使用する、フォーム@ideaに手動で new を作成Ideaする、フォームに準備された を提供するヘルパーを定義するIdea

于 2012-04-26T21:15:14.497 に答える