1

これは私のコントローラーです。def random_generate出力が得られず、オブジェクトを作成すると、長さはありますrandom_primer_generatedが空です。誰かが私を助けることができますか?

class GeneratorsController < ApplicationController
  before_action :set_generator, only: [:show, :edit, :update, :destroy]
  helper_method :random_generate
  # 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)

    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

  def random_generate
    if @generator.choice == 'Randomly'
        length = @generator.primer_length
        chars = 'atgc'
        seq = ''
        #length = length.to_i
        length.times { seq << chars[rand(chars.size)] }
       @generator.random_primer_generated = seq
    end
    return @generator.random_primer_generated
  end
  private
    # Use callbacks to share common setup or constraints between actions.
    def set_generator
      @generator = Generator.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def generator_params
      params.require(:generator).permit(:primer_length, :choice_random_primer_generated)
    end
end

これは私の Form_VIEW です(ユーザーのデータを取得するため-長さと選択):

<%= form_for (@generator ) do |f| %>
  <% if @generator.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@generator.errors.count, "error") %> prohibited this generator from being saved:</h2>

      <ul>
      <% @generator.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <label>Primer Length</label><br>
       <%= f.number_field :primer_length %>
  </div>

    <label>Selection :</label><br>
    <label>Randomly</label>
    <%= radio_button_tag(:choice_random_primer_generated, 'Randomly')%>

<%= button_to('Generate', random_generate_generator_path(@generator))%>
<% end %>
4

3 に答える 3

1

どこでも helper_method を呼び出していません。フォームを投稿してサーバーに到達すると、create メソッドが呼び出されます。helper_method はトリガーされないため、乱数を作成していません。

よくわかりませんでしたが、何をランダム化しようとしているのでしょうか。たとえば、単に rand(999) を使用して数値をランダム化してみませんか?

于 2013-06-25T17:35:31.530 に答える