在没有资源的情况下在Rails上保存数据

时间:2017-10-07 04:28:57

标签: ruby ruby-on-rails-3

我很难解释我想要的东西,但我仍会尽我所能。

我在Rails中创建了一个表单,用户可以填写某些字段。现在填充完这些字段后,我知道我可以在Router中使用资源,并在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中使用In Built表单,但我只想将参数从View传递给Controller的方法。

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

我会帮你解决问题。 请按照以下步骤操作:

  1. 在routes.rb中创建您的路线:

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

    或者如果你想通过post方法传递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
    
  4. 注意:我假设您已经有product.rb模型