모든 발전기의 결과를 얻으 려하고 결과를 1 개의 테이블로 병합하려고합니다. belongs_to 결과 결과 :ID가없는 생성기를 찾을 수 없습니다.
발전기 has_many : 나는 다음과 같은 관계가 발전기
나는 새로운 결과를 생성 할 때마다
을, 나는 ID없이 발전기를 찾을 수 없다는 오류가 발생했습니다. 왜 오류가 발생합니까? 어떻게 해결해야합니까?예 : localhost : 3000/generators/new =은 생성기 양식에 값을 입력하고 생성 버튼을 클릭하면 localhost : 3000/generators/8/results/new로 이동합니다. . 이 양식에 대한 값을 입력 한 후에 여기에 ID없이 Generator를 찾을 수 없다는 오류 메시지가 표시됩니다. 나는 Generators + Result 값을 함께 표시 할 수있는 페이지를 만들려고합니다. 모든 발전기와 각 결과 데이터를 1 페이지에 표시하십시오.
GeneratorController
class GeneratorsController < ApplicationController
before_action :set_generator, only: [:show, :edit, :update, :destroy]
# GET /generators
# GET /generators.json
def index
@generators = Generator.all(:include => [:results])
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(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
# 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,:no_A,:no_T,:no_G,:no_C,:user_seq)
end
end
Result.rb
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
ResultController [오류 DEF 생성의 행에서 강조되고; 발전기 = Generator.find (PARAMS [: ID]) 발생이 많은 결과가있는 경우]
class ResultsController < ApplicationController
before_action :set_result, only: [:show, :edit, :update, :destroy]
# GET /results
# GET /results.json
def index
@results = Result.all
end
# GET /results/1
# GET /results/1.json
def show
end
# GET /results/new
def new
@result = Result.new
end
# GET /results/1/edit
def edit
end
# POST /results
# POST /results.json
def create
@result = Result.new
@result = @result.generate_result(result_params)
generator = Generator.find(params[:id])
@result = generator.results.build(result_params)
# generator = Generator.find(3)
# @result = generator.results.build(result_params)
# @[email protected]_result(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
# PATCH/PUT /results/1
# PATCH/PUT /results/1.json
def update
respond_to do |format|
if @result.update(result_params)
format.html { redirect_to @result, notice: 'Result was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @result.errors, status: :unprocessable_entity }
end
end
end
# DELETE /results/1
# DELETE /results/1.json
def destroy
@result.destroy
respond_to do |format|
format.html { redirect_to results_url }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_result
@result = Result.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def result_params
params.require(:result).permit(:ncbi_ref_seq)
end
end
생성기/index.html.erb은
<h1>[Index]Random Amplified Polymorphic DNA [RAPD] Primer Generator</h1>
<table>
<thead>
<tr>
<th>Primer length</th>
<th>Selected choice</th>
<th>Random primer generated</th>
<th>Complimentary primer</th>
<th>NCBI ref seq</th>
<th>Genome sample</th>
<th>Binding times</th>
</tr>
</thead>
<tbody>
<% @generators.each do |generator| %>
<tr>
<td><%= generator.primer_length %></td>
<td><%= generator.choice %></td>
<td><%= generator.random_primer_generated %></td>
<td><%= generator.c_primer %></td>
<% for result in generator.results %>
<td><%= result.ncbi_ref_seq %></td>
<td><%= result.genome_sample %></td>
<td><%= result.binding_times %></td>
<%end%>
<td><%= link_to 'Show', generator %></td>
<td><%= link_to 'Edit', edit_generator_path(generator) %></td>
<td><%= link_to 'Destroy', generator, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'Home', root_path %>
<%= link_to 'New Generator', new_generator_path %>
안녕하세요, UR 단계를 수행했지만 여전히 오류가 발생합니다. ID없이 Generator를 찾을 수 없습니다. 아래는 내 코드입니다. 'def new generator = Generator.find (params [: generator]) @result = generator.results.build (result_params)end' – BC2