2016-10-01 78 views
1

这是一个可能的重复,但我已阅读并尝试几乎所有建议,但我一直在New action视图中收到错误。我使用Rails 5.param缺失或值为空:ph - rails

我曾尝试以下:

private 
    def ph_params 
     params.require(:ph).permit(:amount) 
    end 

而且也尝试了以下内容,错误消失了,但我的价值观并没有保存到数据库中,只显示无:

private 
    def ph_params 
     params.permit(:amount) 
    end 

我的控制器:

class PhsController < ApplicationController 
    def index 
    end 

    def new 
    @ph = Ph.new(ph_params) 
    end 

    def create 
    @ph = Ph.new(ph_params) 
     respond_to do |format| 
     if @ph.save 
     format.html { redirect_to @ph } 
    else 
     format.html { render "new" } 
    end 
    end 
    end 

    def show 
    @ph = Ph.find(params[:id]) 
    end 

private 
    def ph_params 
    params.require(:ph).permit(:amount) 
    end 
end 

new.html.erb形式开始

<%= simple_form_for @ph, url: phs_path do |f| %> 

型号

class Ph < ApplicationRecord 

end 

我可能失去了一些东西。感谢您的协助,并提前致谢。

回答

1

修改您new行动

def new 
@ph = Ph.new 
end 

原因你得到的错误,因为当你打的路线phs/new,无钥匙phparams哈希控制器通过,但你想访问params[:ph][:amount],这是ph_params的返回值。这就是为什么错误“param丢失或值为空”的原因。

如果你想知道在params获得通过什么样的价值观已经为每一个请求,下面一行添加到您的application.html.erb

<%= params.inspect %> 

您可能会发现一个哈希与在new页两个键{"controller" => "phs", "action" => "new"}

但是,当您尝试创建新的ph对象时,将在params哈希中找到一个密钥ph

顺便说一下,我认为你不太明白strong parameters。我建议你阅读http://api.rubyonrails.org/classes/ActionController/StrongParameters.html

+0

哇,这是一个非常新手的错误从我身边。 –

相关问题