0

有没有更有效的方法来编写这个控制器代码?这会处理一个传递名称和描述字段的表单,然后将其保存在我的模型中。我想知道是否有一种方法可以一次传递所有参数,而不是指定每个参数,只要它们与我的模型中的列匹配。谢谢你的帮助!

控制器:

def new
   @new_company = Company.new
   @new_company.name = params[:name]
   @new_company.description = params[:description]
   @new_company.save
end

看法:

<form action="/checklist/new" method="post">

  <label>Company Name</label>
  <input type="text" name="name"/>

  <label>Company Description</label>
  <input type="text" name="description"/>

  <button type="submit">Submit</button>

</form>

模型:

class Company < ActiveRecord::Base
  attr_accessible :description, :name
end
4

1 回答 1

2

你应该把它写在你的 CREATE 动作中,而不是在 NEW

def create
   @company = Company.new(params[:company])
   @company.save
end

新的应该是这样的:

   def new
      @company = Company.new    
   end

此外,不要为表单编写 html,而是使用 Rails 方式:

<%= form_for(@company) do |f| %>

  <%= f.label :name , "Company Name" %>
  <%= f.text_field :name %>

  <%= f.label :description, "Company Description"%>
  <%= f.text_field :description %>

  <%= f.submit "Submit"%>
<% end %>

为了更好地理解一切,我建议您阅读这本书: http ://ruby.railstutorial.org/ 或这个简短的教程: http ://railsforzombies.org/levels/1

于 2013-03-12T17:34:07.413 回答