ruby版本号: 2.3
rails版本号 : 5.0.2
这是我写的 controller
class BooksController < ApplicationController
def index
@books = Book.all
end
def new
@book = Book.new
end
def create
Book.create :title => params[:book][:title],
:author => params[:book][:author]
redirect_to books_path
end
def edit
@book = Book.find params[:id]
end
def update
@Book.update params[:book]
redirect_to books_path
end
end
这是编辑页
<h2>编辑书籍</h2>
<%= form_for @book do |f| %>
书名: <%= f.text_field :title %><br/>
作者: <%= f.text_field :author %><br/>
<%=f.submit %>
<% end %>
这是首页
<h2>首页</h2>
<table>
<tr>
<td>书名</td>
<td>作者</td>
<td>操作</td>
</tr>
<% @books.each do |book| %>
<tr>
<td><%= link_to book.title, book %></td>
<td><%= book.author %></td>
<td>
<%= link_to '编辑' , edit_book_path(:id => book.id) %>
<%= link_to '删除', book, :mothod => :delete %>
</td>
</tr>
<% end %>
<%= link_to '新建', new_book_path %>
这是 new 页面
<h2>新建图书</h2>
<%= form_for @book do |f| %>
书名:<%= f.text_field :title %><br/>
作者:<%= f.text_field :author %><br/>
<%= f.submit %>
<% end %>
服务器用的是 rails 内置的服务器
首先我把我遇到的几个问题讲出来 第一个问题 是 new 页面的问题 在我只写了
class BooksController < ApplicationController
def index
@books = Book.all
end
def new
end
end
new 并没有写 @book = Book.new
在首页 点击新建后 提示我
然后再 new 里面加了 @book = Book.new 就没有这个报错了 这是第一个问题
第二个问题就是 create 我不清楚是否是我写的有问题 还是别的地方操作有误 才导致这个问题的 刚开始 create 写的是这样的
def create
@book.create :title => params[:book][:title],
:author => params[:book][:author]
end
这么写 报错提示: 然后改成 Book.create :title => params[:book][:title], :author => params[:book][:author] 又没有报错了,但是 在此之前我反复遇到过这个问题 第一次写的是 Book.create :title => params[:book][:title], :author => params[:book][:author] 它报错了 然后又改成 @book.create 又没有报错了 现在又成这样 让我很困惑
还有第三个问题 是 update
def update
@Book.update params[:book]
redirect_to books_path
end
之前也是这么写 并没有报错 然而再今天又报错了 上面说的 create update 就是有时候 create 报错了 有可能 update 并没有报错 有时候 两个都会报错 然后我以为是我基础的没学好 把 guides 的 controller 都看完了 也没能明白 造成这些错误的原因是什么 然而我问过跟我一起学习的小伙伴 他们并没有遇到这样的错误 我们的写法都是一样的 但是我这边还是会有这个错误 我的是 centos 他们用的是 mac 的系统 希望有大神能帮我解答一下疑惑