2013-03-12 2 views
0

Есть ли более эффективный способ написать этот код контроллера? Это обрабатывает форму, которая передает поле имени и описания, а затем сохраняет его в моей модели. Мне интересно, есть ли способ передать все параметры одновременно, вместо указания каждого из них, если они соответствуют столбцу в моей модели. Спасибо за вашу помощь!Rails - Самый эффективный способ сохранить несколько параметров?

Контроллер:

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 

ответ

2

Вы должны написать это в вашем CREATE действия, а не в НОВОМ

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

+0

Благодаря Zippie. Я получаю странную ошибку, когда я пытаюсь это сделать. SQLite3 :: BusyException: база данных заблокирована: INSERT INTO «компании» («created_at», «description», «name», «updated_at») VALUES (?,?,?,?) – Jason

+2

@Jason, что, вероятно, означает, что что-то еще используя его .... 'rails console' возможно или SQLite Database Browser, я предполагаю – varatis

+1

Да, это что-то еще, посмотрите на второй ответ здесь, это помогло мне раз: http://stackoverflow.com/questions/ 78801/sqlite3busyexception – Zippie

Смежные вопросы