如何在保存Rails之前连接text_fields值?

时间:2015-01-30 13:36:09

标签: ruby-on-rails

我有3个文字字段:

<%= text_field_tag(:image1, nil, :placeholder => "Ссылка на фото тут") %>
<%= text_field_tag(:image2, nil, :placeholder => "Ссылка на фото тут") %>
<%= text_field_tag(:image3, nil, :placeholder => "Ссылка на фото тут") %>

def create
    @post = Post.new(post_params)
end


def post_params
    params.require(:post).permit(:title, :content, :category, :post_type, :image)
end

所以,我想在保存之前将这三个文本字段(:image1,:image2,:image3)连接到:image中。我该怎么办?

通过&#34; _&#34;

连接

更新

表单代码:http://pastebin.com/HTBTJtnQ 邮政控制人:http://pastebin.com/NF2MEyrg

5 个答案:

答案 0 :(得分:0)

很简单,你可以这样做

def create
    post_params[:image] = params[:image1].to_s + "_" + params[:image2].to_s + "_" + params[:image3].to_s
    @post = Post.new(post_params)
end

答案 1 :(得分:0)

如果我没记错的话,强对手的行为也像哈希一样。如果是这样的话, 然后post_params.values_at(:image1, :image_2, :image_3).join(' ')应该工作(参见Hash#values_at)。但你需要先让这三个;现在你只允许:image

答案 2 :(得分:0)

来自这个

def post_params
    params.require(:post).permit(:title, :content, :category, :post_type, :image)
end

到这个

def post_params
    params[:image] = params[:image1].to_s + "_" + params[:image2].to_s + "_" + params[:image3].to_s
    params.require(:post).permit(:title, :content, :category, :post_type, :image)
end

答案 3 :(得分:0)

如果您的文本字段在您的视图中,则需要在post_param函数中允许它们:

def post_params
  params.require(:post).permit(:title, :content, :category, :post_type,
  :image1,:image2,:image3)
end

然后,在创建中,

def create
   image =  post_params[:image1]+"_"+post_params[:image2]+"_"+post_params[:image3]
   good_param = post_param #so you can modify the param's values
   good_param[:image] = image
   #delete image1,2,3 from good_param
   @post = Post.new(good_param)
end

应该做的工作

答案 4 :(得分:0)

要在保存之前进行连接,可以在Post模型中执行此操作:

before_save :concatenate_images

def concatenate_images
  self.[your field name] = [array of params].join('_')
  self.save
end