2

new.html.erb在我的 Rails 3.2 项目中,我有一个表单可以在其中创建一个新帖子app/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

当用户提交帖子时,帖子的titlecontent被添加到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

把它放在你的控制器中。您显然必须具有random_hashPost 模型才能工作的属性。

我正在使用Kent Fredric 的解决方案来生成六个随机字母。

于 2012-10-13T00:11:49.257 回答