我有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
答案 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