如何在使用decent_exposure提交后保存对象?

时间:2016-04-18 20:53:43

标签: ruby-on-rails ruby decent-exposure

我完全不知所措!我第一次使用了decent_exposure gem,我想问题就在于它。 那就是链接https://github.com/hashrocket/decent_exposure 当我提交表单时,它什么都不保存。我在数据库中的所有表都只是空字段。 这是我的表格

<%= simple_form_for book do |f| %>
    <%= f.input :name %>
    <%= f.input :author %>
    <%= f.input_field :annotation %>
    <%= f.button :submit %>
<% end %>

这是我的控制者:

class BooksController < ApplicationController
  before_filter :is_admin?
  before_filter :authenticate_user!
  expose(:book, finder_parameter: :id, params: :book_params)
  #I've tried both expose(:book) and expose(:books)

  def create
    if book.save
      redirect_to(book)
    else
      render :new
    end
  end

  def update
    if book.save
      redirect_to(book)
    else
      render :edit
    end
  end

  def show
  end

  def is_admin?
    if current_user.admin?
      true
    else
      render :text => 'Registrate'
    end
  end

  def book_params
    params.require(:book).permit(:name, :author, :annotation)
  end

end

它出错了

  

param缺失或值为空:book

def book_params
    params.require(:book).permit(:name, :author, :anotation)
  end

如果我尝试使用params和book_params方法公开(:book),它似乎没问题,但在提交表单后,所有字段都是零。我究竟做错了什么? params定义有什么错误吗?我一直在思考和尝试不同的变种很多次,我无法想象问题出在哪里。我们将不胜感激!

2 个答案:

答案 0 :(得分:1)

我找到了!有&#34; attribures :: book_params&#34;而不是&#34; params :: book_params&#34;

答案 1 :(得分:0)

如果从

更改控制器中的第4行,会发生什么

expose(:book, finder_parameter: :id, params: :book_params)

expose(:book, params: :book_params)