在Ruby中获取公司描述

时间:2015-03-02 13:20:28

标签: ruby-on-rails ruby database ruby-on-rails-3.2 scaffold

我有一个带有companyid和companyname的表公司,以及我的公司配置的表Config,其中包含我的下拉列表中的id,companyid,companyname,config由rails g scaffold生成

如何在创建新配置时覆盖/更改Ruby的保存/创建按钮?  在配置表上使用我的公司名称是否正确,或者删除它并使用方法geyCompanyName(id)更好?

我是Ruby的新手,只是想按照教程

控制器看起来像

 def index
@company_config = CompanyConfig.all

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @company_config }
end
end


def show
@@company_config = CompanyConfig.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @company_config }
end
end


 def new
@company_config = ComapnyConfig.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @company_config }
end
end


def edit
 @company_config = CompanyConfig.find(params[:id])
end

def create
@company_config =  CompanyConfig.new(params[:company_config])

respond_to do |format|
  if @company_config.save
    format.html { redirect_to @company_config, notice: 'Config was successfully created.' }
    format.json { render json: @company_config, status: :created, location: @company_config }
  else
    format.html { render action: "new" }
    format.json { render json: @@company_config.errors, status: :unprocessable_entity }
  end
  end
  end

我试图查看Controller创建但不确定如何编辑它以满足我想要完成的任务。

我的观点看起来像

<%= simple_form_for(@company_config) do |f| %>
 <%= f.error_notification %>

 <div class="form-inputs">
  <%= f.input :companyid, collection:build_company_select_array %>
  <%= f.input :companyname %>


 </div>

 <div class="form-actions">
  <%= f.button :submit %>
  </div>

1 个答案:

答案 0 :(得分:0)

您不应该在两个地方存储companyname等信息。

您在CompanyConfig模型中唯一需要的是id,company_id以及您希望存储的适用于配置记录的公司的任何其他信息。

您可以定义公司,以便has_one company_config(或has_many company_configs)和CompanyConfig定义,以便belongs_to company

如果您想引用公司名称,可以通过my_company_config.company.companyname访问它,尽管您最终会学习委派方法。一个非常简单的例子......

class CompanyConfig
  belongs_to company
  def companyname
    company.companyname
  end
end

...这将使您能够执行my_company_config.companyname但仍然只将数据存储在一个位置。