2017-07-02 31 views
-1

我有这些控制器无法引用参数

class Checkout::PaymentsController < ApplicationController 
    before_action :params 
    def create 

     if Order.where(:date => params[:date]).present? 
      redirect_to reserva_path 
     end 
    end 

     def params 
     params.require(:Order).permit(:date) 
     end 
    end 

class Products::ReservesController < ApplicationController 
    before_action :set_product, only: [:show] 

    def index 
    @products = Product.all 
    end 

    def show 
    @product = Product.find(params[:pr_id]) 
    end 

    def set_product 
    @partner = Product.find(params[:pr_id]) 
    end 

和视图(show.html.erb)

<div class="detail"> 
    <h3><%= @product.name %></h3> 
    <p><%= @product.description %></p> 
    <h4>R$ <%= @product.price %></h4> 
    <h4>Escolha a data</h4> 
    <%= form_tag(checkout_payments_path) do%> 
     <%= hidden_field_tag :product_id, @product.id %> 
     <div class="data"> 
     <%= date_select(:date, :date, start_year: 2017) %> 
     </div> 
     <%= submit_tag "Alugar", class: "btn btn-success"%> 
    <% end %> 

show.html.erb将product_id和date_select的日期作为参数发送给Checkout/Payment控制器,但是我收到错误,说不能引用控制器(返回是动作控制器参数的一个实例) 我做错了什么?

OBS:控制器在不同的命名空间

编辑:服务器日志错误

Started POST "/checkout/payments" for ::1 at 2017-07-02 12:25:19 -0300 
Processing by Checkout::PaymentsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"XJdLe2QQww6MvWQ+XWExHlkTAJ7EOD316nxXf8m2YC4HapWtKMb1ciscGZUUNzmCOCuIugsgShYiDj102AfEUg==", "product_id"=>"1", "dates"=>{"{:start_year=>2017}(3i)"=>"2", "{:start_year=>2017}(2i)"=>"7", "{:start_year=>2017}(1i)"=>"2017"}, "commit"=>"Alugar"} 
Completed 500 Internal Server Error in 92ms (ActiveRecord: 4.0ms) 



TypeError (can't quote ActionController::Parameters): 

app/controllers/checkout/payments_controller.rb:4:in `create' 

编辑2: 只见日期作为哈希过去了,看到日志

Processing by Checkout::PaymentsController#new as HTML 
    Parameters: {"utf8"=>"✓", "product_id"=>"1", "date"=>{"date"=>"201-01-08"}, "commit"=>"Alugar"} 
    Rendering checkout/payments/new.html.erb within layouts/application 
    Rendered checkout/payments/new.html.erb within layouts/application (0.0ms) 
    User Load (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 8 ORDER BY `users`.`id` ASC LIMIT 1 
    Rendered shared-templates/_header.html.erb (8.0ms) [cache miss] 
Completed 200 OK in 356ms (Views: 324.7ms | ActiveRecord: 0.0ms) 

我加入控制器:

def date_params 
    params.require(:date).permit(:date) 
end 

,但我仍然有这个vallue:

#<ActionController::Parameters:0x0000000d4d7c60> 
+0

什么是确切的错误信息?请在服务器日志 – Pavan

+0

中生成的'params'发布看看编辑,请 –

回答

0

我认为这个问题是你坚强的参数使用

# I delete before_action here 

def create 
    @order = Order.new(params) 
    # here is you filter your order through params method below 
end 

def params 
    params.require(:Order).permit(:date) 
end 

为您的代码上面有具体日期,检查顺序(从PARAMS值)

my_date = params[:date].to_date 
if Order.where("date = ? ",my_date).count > 0 
    redirect_to reserva_path 
end 
+0

不工作,这里是日志(循环) app/controllers/checkout/payments_controller.rb:10:在'params' app/controllers/checkout/payments_controller.rb:10:在'params' –