【问题标题】:Rails 4 - ActiveModel::ForbiddenAttributesErrorRails 4 - ActiveModel::ForbiddenAttributesError
【发布时间】:2015-07-01 21:57:07
【问题描述】:

我已阅读有关它的其他问题,但我仍然无法指出导致错误的原因。我已经定义了Rails 4的强参数,但是一直报错:

MessagesController#create 中的 ActiveModel::ForbiddenAttributesError

我的看法是这样的:

<%= form_for(@message) do |f| %>
    <div class="form-group field">
  <%= f.label :phrase %>
  <br/>
  <%= f.text_field :phrase,  autofocus: true, class: 'form-control' %>
</div>
<div class="form-group field">
  <%= f.label :date %>
  <br/>
  <%= f.date_field :date, class: 'form-control' %>
</div>
<div class="actions text-center">
  <%= f.submit "Submit", class: 'btn btn-default' %>
</div>
<% end %>

我的控制器:

class MessagesController < ApplicationController

def today
    @dates = Message.all()
end

def history
    @messages = Message.history_checker
end

def new
    @message = Message.new
end

def create
    @message = Message.new(params[:message])
    if @message.save
        flash[:notice] = "OK"
        redirect_to root_path
    else
        render :action => 'new'
    end
end

private

def message_params
  params.require(:message).permit(:phrase,:date)
end 
end

错误指向控制器@message = Message.new(params[:message]) 的第15 行。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 strong-parameters


    【解决方案1】:

    您只需要使用message_params 而不是params[:message]

    @message = Message.new(message_params)
    

    【讨论】:

    • 它现在可以工作了,谢谢!但是我能问一下 message_params 和 params[:message] 之间到底有什么区别吗?我有点困惑,因为我在另一个项目中使用了 params[:object] 并且它没有问题。
    • 这个项目和其他项目的 Rails 版本是什么?
    • @Vicvans 阅读了强参数edgeguides.rubyonrails.org/…
    • @oscar 都在 Rails 4.1 上
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多