Ruby on rails 如何从模型函数中获取值
嗨,我从下面的代码中得到一个空值。我不知道出了什么问题。有人能帮我吗Ruby on rails 如何从模型函数中获取值,ruby-on-rails,Ruby On Rails,嗨,我从下面的代码中得到一个空值。我不知道出了什么问题。有人能帮我吗 class GeneratorsController < ApplicationController before_action :set_generator, only: [:show, :edit, :update, :destroy] # GET /generators # GET /generators.json def index @generators = Generator.all
class GeneratorsController < ApplicationController
before_action :set_generator, only: [:show, :edit, :update, :destroy]
# GET /generators
# GET /generators.json
def index
@generators = Generator.all
end
# GET /generators/1
# GET /generators/1.json
def show
end
# GET /generators/new
def new
@generator = Generator.new
end
# GET /generators/1/edit
def edit
end
# POST /generators
# POST /generators.json
def create
@generator = Generator.new(generator_params)
@generator.choice = params[:choice]
if params[:choice] == 'Randomly'
@generator.random_generate(params[:primer_length],params[:random_primer_generated],params[:c_primer])
#elsif params[:choice] == 'No_of_ATGC'
# @generator.no_ATGC
#elsif params[:choice] == 'Seating'
# @generator.seating
end
respond_to do |format|
if @generator.save
format.html { redirect_to @generator, notice: 'Generator was successfully created.' }
format.json { render action: 'show', status: :created, location: @generator }
else
format.html { render action: 'new' }
format.json { render json: @generator.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /generators/1
# PATCH/PUT /generators/1.json
def update
respond_to do |format|
if @generator.update(generator_params)
format.html { redirect_to @generator, notice: 'Generator was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @generator.errors, status: :unprocessable_entity }
end
end
end
# DELETE /generators/1
# DELETE /generators/1.json
def destroy
@generator.destroy
respond_to do |format|
format.html { redirect_to generators_url }
format.json { head :no_content }
end
end
private
def set_generator
@generator = Generator.find(params[:id])
end
def generator_params
params.require(:generator).permit(:primer_length, :choice, :random_primer_generated)
end
end
类生成器控制器
在我的模型中
class Generator < ActiveRecord::Base
attr_accessible :choice, :primer_length, :random_primer_generated, :genome_sample
belongs_to :result
def random_generate(primer_length,random_primer_generated,c_primer)
length = primer_length
length=length.to_i
chars = 'ATGC'
seq = ''
length.times { seq << chars[rand(chars.size)] }
self.random_primer_generated = seq
c_primer =Bio::Sequence::NA.new(self.random_primer_generated.reverse)
self.c_primer=c_primer.complement.upcase
end
end
类生成器 length.times{seq我打赌在调用random\u generate
之后,您忘记了将生成器实例保存到数据库中
如果这不是问题所在,您能否在Rails控制台中发布一段交互片段,展示您如何尝试设置这两个属性,以及它们如何最终为零?从提供的信息很难准确判断您是如何重现问题的。控制台会话将清理问题,并允许您测试您的模型与控制器分开。您应该在创建操作中使用生成器参数
而不是参数
这超出了问题的范围,但重构生成器可以是:
def random_generate(primer_length)
chars = 'ATGC'
seq = ''
primer_length.to_i.times { seq << chars[rand(chars.size)] }
self.random_primer_generated = seq
c_primer =Bio::Sequence::NA.new(self.random_primer_generated.reverse)
self.c_primer=c_primer.complement.upcase
end
单元测试生成器模型甚至比使用rails控制台更好;)模型示例可能有用抱歉我编辑了它。请保存我的T。我只给他们底漆长度,而不是生成的随机底漆。我想要模型中定义的函数(随机生成)为生成的属性random\u primer\u提供值。但它返回nil。如何发布交互片段?您可以将其发布在摘要中,也可以编辑原始问题。
g = Generator.new
g.random_generate(4)