如何在控制器的一个动作中执行两个动作

时间:2016-11-16 14:31:01

标签: ruby-on-rails ruby

我需要创建一些文字。我有一个创建动作:

def create
  @text = Text.new(text_params)

  if @text.save
    redirect_to text_path(@text), notice: "Text successfully created"
  else
    render :new
  end
end

和表格:

<%= form_for @text do |f| %>
    <div class="form-group">
      <label>Text name</label>
      <%= f.text_field :name %>
    </div>

    <div class="form-group">
      <label>Description</label>
      <%= f.text_area :description%>
    </div>

    <div class="actions">
      <%= f.submit "Save", class: "btn btn-primary" %>
    </div>

<%end%>

我提交文字时需要有两个动作。第一个动作是创建一个文本。第二个是从文本单词中创建单词,并且应该列出单词。

创建单词时,如果不存在,我需要创建一个if语句。

我现在遇到了如何拆分和创建每个单词的问题:

def create_words
  @text.split(/\W+/)
  @text.each do |splitted|
    if splitted !== @words.name
      splitted = @word
      @word.save
      redirect_to root_path
    end
  end

1 个答案:

答案 0 :(得分:1)

最简单的方法是在after_create回调中做你的话。

class Text < ApplicationRecord
  after_create :create_words


  private

  def create_words
    # do your thing here
  end
end

create_words将在成功创建文本时调用。