0

私は in を使用render 'form'index.html.erbています。ユーザーがフォームを送信すると、/books/1 に移動します。代わりに、インデックス コントローラー (つまり、/books ページ) にリダイレクトするようにします。

私は使用しようとしました:

format.html { render action: "index", notice: 'Book Created' }

index.html.erbファイルには、次のものがあります。

<% @books.each_with_index do |book,index| %>

そのページはエラーを出しています:

undefined method each_with_index

ここに私の方法があります:

def index
  @books = Book.all
  @book = Book.new

  respond_to do |format|
    format.html 
    format.json { render json: @books }
  end
end

def create
  @book = current_user.books.new(params[:book])

  respond_to do |format|
    if @book.save
      format.html { redirect_to @book, notice: 'Book created.' }
      #format.html { render action: "index", notice: 'Book Created' }      
    else
      format.html { render action: "new" }
    end
  end
end

フォームを表示ページではなくインデックス ページにリダイレクトするにはどうすればよいですか?

4

2 に答える 2

1

インデックス ページにリダイレクトする場合は、次のredirect_toメソッドを使用する必要があります。

def create
  @book = current_user.books.new(params[:book])

  respond_to do |format|
    if @book.save
      format.html { redirect_to action: :index, notice: 'Book created.' }
    else
      format.html { render action: "new" }
    end
  end
end
于 2013-07-23T13:44:26.390 に答える
0

controller_path に変更

 def create

  @book = current_user.books.new(params[:book])

  respond_to do |format|
    if @book.save
      format.html { redirect_to tests_path, notice: 'Book created.' }
    else
      format.html { render action: "new" }
    end
  end
end
于 2016-06-21T03:22:12.360 に答える