【问题标题】:Save Form Data to database Ruby on Rails将表单数据保存到数据库 Ruby on Rails
【发布时间】:2015-04-29 21:08:18
【问题描述】:

我正在尝试将表单数据保存到我的数据库中 但由于某种原因,我不断收到错误消息。

我对 ruby​​ 相当陌生,所以不太确定问题出在哪里。 我正在尝试创建一个新的书籍条目,这是我目前所拥有的。

books.controller

class BooksController < ApplicationController

  def new 
    @book = Book.new
  end 

  def create
    @book = Book.new(book_params)
    if @book.save
        redirect_to new_book_path
    end
  end

  private

  def book_params
    params.require(:book).permit(:title, :description, :author, :status, :isbn_number)
  end

end

出现的错误是:

NameError in BooksController#create
undefined local variable or method `new_book_path' for #<BooksController:0xe3f5ae8>

我有一个表格,我填写了所有这些详细信息,但是当我尝试提交时,我收到了那个错误。它说错误在重定向上,但我不知道出了什么问题。

路线

Rails.application.routes.draw do

  resources :books, :only => [:new, :create]

  get 'page/books'

  get 'page/about'

  get 'page/contact'

  get 'page/home'

  devise_for :users 
  # The priority is based upon order of creation: first created -> highest priority.
  # See how all your routes lay out with "rake routes".

  # You can have the root of your site routed with "root"
   root 'page#home'
end

【问题讨论】:

    标签: ruby-on-rails ruby database


    【解决方案1】:

    您的路线文件似乎有问题: 您的 config/routes.rb 文件应具有以下内容 资源 :books, :only => [:new, :create]

    更完整的答案:

    你得到的错误是说这条线

     redirect_to new_book_path
    

    抛出错误,因为它不理解变量 new_book_path。 这个变量是通过你的路由文件创建/处理的。

    【讨论】:

    • 好的,我添加了那行,它似乎工作。添加后,我现在是否必须将导航方式更改为新的,创建?但无论如何谢谢你,我最初只是有资源:我的路线中的书籍
    • 如果您共享您的路线文件,我们可以通过它。我感觉你有默认路由。
    • 我已将其添加到问题中
    【解决方案2】:

    试着改变这一行

    redirect_to new_book_path
    

    render 'new'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2011-01-14
      • 2015-01-13
      • 2018-01-09
      • 2011-11-28
      相关资源
      最近更新 更多