如何使用从@object传递的数据预填充表单?

在我的网站上,用户可以上传“灵感”,即用户发现鼓舞人心的图像或文本。

我想创建一个function,如Pinterest ,用户可以点击图像或文本来“固定”,而不必上传自己的。

在此处输入图像描述

单击按钮后,我希望用户被重定向到启示/ _form并填充相应的字段。

在此处输入图像描述

例如,我尝试使用new_inspiration_path({image: inspiration.image})在路径中传递它,但这没有效果。

       

您应该在控制器操作中分配此对象,如下所示:

 def new @inspiration = Inspiration.find(params[:inspiration_id]) end 

路径应该是:

 new_inspiration_path(inspiration_id: inspiration.id) 

你为什么要复制function?

如果有人“固定”了灵感,那么灵感与其他用户上传的灵感是否相同并非如此? 这意味着,您应该具有创建引脚的function,而不是灵感


如果脱离背景我会删除它,但这是我要做的:

 #config/routes.rb resources :inspirations do match :pin, via: [:post, :delete], on: :member #-> url.com/inspirations/:id/pin end #app/controllers/inspirations_controller.rb class InspirationsController < ApplicationController def pin @inspiration = Inspiration.find params[:id] if request.post? current_user.pins << @inspiration elsif request.delete? current_user.pins.delete @inspiration end end end 

这将允许您使用:

 #app/views/inspirations/index.html.erb <% @inspirations.each do |inspiration| %> <%= link_to "Pin", inspiration_pin_path(inspiration) %> <% end %> 

-

如果您想为“pin”添加额外的属性(例如自定义标题等),您将能够使用简单的表单来完成...

 #app/views/inspirations/index.html.erb <% @inspirations.each do |inspiration| %> <%= form_for inspiration, url: inspiration_pin_path(inspiration) do |f| %> <%= f.text_field :caption %> <%= f.submit %> <% end %> <% end %>