2017-10-07 45 views
0

對於我解釋我想要的東西有點困難,但我仍會盡我所能。在沒有資源的Rails中保存數據

我在Rails中創建了一個表單,用戶可以填寫某些字段。現在,一旦這些字段被填充,我知道我可以在路由器中使用資源,並在Controller中定義一個將數據保存到數據庫的create方法。 但是我想要的是將保存在窗體中的數據傳遞給我的控制器。然後在控制器中創建一個自定義方法,就像傳統的Create方法一樣,但不是使用Resource方法傳遞參數,而是想將它們作爲參數傳遞。它甚至有可能在Rails的:

這是我當前的視圖中創建窗體:

<h1> Please add a new product</h1> 
<%= form_for @product do |p| %> 
    <p> 
    <%= p.label 'Product Name' %><br/> 
    <%= p.text_field :product_name %><br/> 
    </p> 
    <p> 
    <%= p.label 'Description' %><br/> 
    <%= p.text_area :description %><br/> 
    </p> 
    <p> 
    <%= p.label 'Price' %><br/> 
    <%= p.text_field :price %><br/> 
    </p> 
    <p> 
    <%= p.label 'Rating' %><br/> 
    <%= p.text_field :rating %><br/> 
    </p> 

<% end %> 

所以可我使用Ruby的建築形式,但我只是想通過從視圖參數來控制的方法。

感謝您的幫助!

+0

讀http://guides.rubyonrails.org/routing。 HTML。您可以隨時定義自定義路線,例如'post'/ latest_products'=>'products#latest_create'' – kiddorails

回答

0

我會幫你解決你的問題。 請按照下列步驟操作:

  1. 在routes.rb中創建您的路線:

    get "/create_product" => 'products#create_product', as: :create_product 
    

    ,或者如果你想通過郵寄方式傳遞PARAMS:

    post "/create_product" => 'products#create_product', as: :create_product 
    
  2. 現在改變你的看法根據新的路線幫手文件:

    form_for (@products, url:{:controller=>'products', :action=>'create_product'}, html:{method:'post'}) 
    
  3. 現在最後一步修改您的控制器:

    def create_product 
    #your form values are avaible here in params variable 
    pp params 
    puts params[:Price] 
    #save your params into ur db 
    end 
    

注:我假設你已經有了product.rb模型