0

私のBusinessモデルでは、ビジネスを作成しようとしてエラーが発生すると、POST の後にshared/page_headerパーシャルが削除されることに気付きました。

def page_title
  "#{@page_title}"
end

<% unless @page_title.blank? %>
<div class="row">
   <div class="page-header span12">
      <h1><%= @page_title %></h1>
   </div>
</div>
<% end %>

def new
  @business = Business.new
  @page_title = "Add Business"
end

def create
  @business = Business.new(params[:business])
  if @business.save
    redirect_to :back, :notice => "This Business was successfully added."
  else
    render :new, :notice => "It seems there was an error. Please try again."
  end
end

今、私は始めていることに気付きまし/businesses/newたが、POST の後は になり/businessesます。これは正常だと誰かが私に言ったが、私は今までこの種の行動を見たことがなかった. それが役立つ場合、私のリソースにはnewcreateアクションだけがあります。Businessこれを機能させるにはどうすればよいですか?

4

1 に答える 1

2

create メソッドに @page_title = "Add Business" を追加するだけです。"render :new" は新しいテンプレートをレンダリングしますが、新しいメソッドは実行しません。

:action で render を使用することは、Rails の初心者にとってしばしば混乱の原因となります。指定されたアクションはレンダリングするビューを決定するために使用されますが、Rails はコントローラーでそのアクションのコードを実行しません。ビューで必要なインスタンス変数は、render を呼び出す前に現在のアクションで設定する必要があります。http://guides.rubyonrails.org/layouts_and_rendering.html#using-renderから

于 2012-05-30T00:38:00.890 に答える