我有2個表,發生器和結果。我如何鏈接2個表格的數據?
發電機的has_many導致 結果belongs_to的發電機
我怎麼能有一個頁面,其中我可以顯示發電機和結果的所有值?在我的結果控制器創建必須我鏈接Generator_id?我試過了,但是當我嘗試創建屬於該生成器的新結果時,它給了我一個錯誤。
例如本地主機:3000 /發電機/ 3 /結果/新,單擊創建後,它給了我下面的錯誤:
Couldn't find Generator without an ID .
我已經收到了一些建議,要我創建一個新的控制器這樣做。如果是這樣,我應該如何將我的@generator和@result傳遞給它?
GeneratorController
def index
@generators = Generator.all(:include => [:results])
end
def create
@generator = Generator.new(generator_params)
@generator.choice = params[:choice]
if params[:choice] == 'Randomly'
@generator.random_generate(generator_params)
elsif params[:choice] == 'No_of_ATGC'
@generator.no_ATGC(params[:no_A],params[:no_T],params[:no_G],params[:no_C])
elsif params[:choice] == 'Seating'
@generator.seating(params[:user_seq])
end
@generator.result_choice=params[:result_choice]
respond_to do |format|
if @generator.save
if @generator.result_choice == 'Yes'
format.html { redirect_to(new_generator_result_path(@generator)) }
else
format.html { redirect_to @generator, notice: 'Result was successfully created.' }
format.json { render action: 'show', status: :created, location: @generator }
end
else
format.html { render action: 'new' }
format.json { render json: @generator.errors, status: :unprocessable_entity }
end
end
end
結果模型
class Result < ActiveRecord::Base
attr_accessible :ncbi_ref_seq,:genome_seq, :genome_sample
belongs_to :generator, foreign_key: "generator_id"
def generate_result(result_params)
ref_seq = self.ncbi_ref_seq
Bio::NCBI.default_email = "[email protected]"
fasta_sequence = Bio::NCBI::REST::EFetch.nucleotide(ref_seq,"fasta")
fasta=Bio::FastaFormat.new(fasta_sequence)
self.genome_seq = fasta.data
self.genome_sample = fasta.definition
g=Generator.last
p=self.genome_seq.scan(g.c_primer)
self.binding_times= p.length()
end
end
ResultContorller
def index
@results = Result.all(:include => :generator)
end
def create
@result = Result.new
@result = @result.generate_result(result_params)
@generator = Generator.find(params[:id])
@result = generator.results.build(result_params)
respond_to do |format|
if @result.save
format.html { redirect_to @result, notice: 'Result was successfully created.' }
format.json { render action: 'show', status: :created, location: @result }
else
format.html { render action: 'new' }
format.json { render json: @result.errors, status: :unprocessable_entity }
end
end
end
親切,你可以粘貼你的模型和控制器的一些代碼..問題似乎在你的控制器..和在哪裏做你想顯示這些數據? –
我貼了它。我想以生成器索引形式顯示這些數據,我可以顯示所有的生成器值和屬於該生成器的所有結果。 – BC2
我有點困惑......看起來你並不完全遵循「Rails方式」的做法。你不應該在你的生成器窗體上顯示* all *生成器的值。所有生成器的值應該放在索引頁上。 – aardvarkk