2013-08-05 38 views
0

我遇到了一些与我的视图没有传递params散列到控制器的问题。我有一个视图定义的形式,将新的项目添加到数据库中,我得到的错误:Ruby on Rails 4 - 表单助手未将params散列传递给控制器​​

ActionController::ParameterMissing: 
    param not found: item 

这里是我有问题的形式助手和我的控制器处理action代码文件。

new.hmtl.erb

<%= form_for(@item) do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 

    <%= f.label :description %> 
    <%= f.text_field :description %> 

    <%= f.submit "Add", class:"btn btn-large btn-primary %> 
<% end %> 

items_controller.rb

class ItemsController < ApplicationController 
    def new 
    @item = Item.create(set_params) 
    end 

    private 
    def set_params 
     params.require(:item).permit(:name, :description) 
    end 
    end 
end 

我还没有看到关于如何从我的其他问题,解决这个问题了坚实的答案我认为,已经见过。

+1

您需要添加一个创建操作,它具有'def create @item = Item.create(set_params)end让​​新操作变成新的@item = Item.new end –

回答

3

您的new行动是呈现窗体来创建一个新的项目。当这个动作被渲染时,你的参数是空白的。

你的create行动是处理表单的地方,你的参数将被填充。

+0

嗯,我以前做过,但我认为我被混在某个地方。无论如何,这固定它,谢谢! – Excor

相关问题