2

Rails 3.2プロジェクトには、で新しい投稿を作成するためのフォームがありますnew.html.erbapp/views/posts/

<%= form_for(@post) do |post_form| %>
  ...
  <div class="field">
    <%= post_form.label :title %><br />
    <%= post_form.text_field :title %>
  </div>
  <div class="field">
    <%= post_form.label :content %><br />
    <%= post_form.text_field :content %>
  </div>
  <div class="actions">
    <%= post_form.submit %>
  </div>
<% end %>

次に、create関数posts_controller.rb

def create
  @post = Post.new(params[:post])  
  if @post.save
    format.html { redirect_to @post }
  else
    format.html { render action: "new" }
  end
end

ユーザーが投稿を送信するtitleと、投稿のとがモデルcontentに追加されPostます。ただし、その投稿の別のフィールドにも追加したいと思います。フィールドrandom_hash(ユーザーが指定できない)については、8文字の小文字の文字列にします。最初の2文字はタイトルの最初の2文字で、最後の6文字はランダムな小文字です。どうやってやるの?

4

1 に答える 1

4
def create
  @post = Post.new(params[:post])
  @post.random_hash = generate_random_hash(params[:post][:title])
  if @post.save
    format.html { redirect_to @post }
  else
    format.html { render action: "new" }
  end
end

def generate_random_hash(title)
  first_two_letters = title[0..1]
  next_six_letters = (0...6).map{65.+(rand(25)).chr}.join
  (first_two_letters + next_six_letters).downcase
end

それをコントローラーに入れます。Postモデルが機能するには、明らかにrandom_hash属性が必要です。

私はケントフレデリックのソリューションを使用して、6つのランダムな文字を生成しています。

于 2012-10-13T00:11:49.257 に答える