我正在寻找在preview
和new
行动之间加入create
行动的正确方法。
我们假设我有以下内容:
resources :users
默认情况下,提交表单时:
new
,请致电create
行动; edit
,请致电update
。 通过这种方式,我可以对new
和create
使用相同的格式(部分),这很棒!
如何配置资源以在操作之间包含preview
。我的意思是,强迫new
拨打preview
,然后preview
拨打create
。
我可以添加新的路线/操作并指明该操作的表单,但同一表单不能用于new
和edit
。
有一种方法可以配置资源吗?
答案 0 :(得分:1)
看看这个railscast:multibutton form,它会显示一个包含“预览”和“提交”按钮的表单,也许这是您可能想要做的事情。
顺便说一句,你不能通过将locals传递给partial来使用相同的表单吗?例如:
<%= form_for @profile, url: dynamic_path do |f| %>
...
<% end %>
<%= render 'form', dynamic_path: profile_preview_path %>
答案 1 :(得分:0)
你有几种方法可以做到这一点:
preview
操作(您必须为其添加路线)。preview
当用户想要确认预览时,再次提交数据(没有该参数),这次创建记录。 还有两种动态可能性:
create
操作,preview
操作,呈现部分和将它包含在页面上,然后当您的用户仍然拥有他刚刚填写的表单时,用户会决定是否要修改或提交。答案 2 :(得分:-2)
我建议添加一个DateTime列“finished_at”,“published_on”等等......适用于您的域名。
以博客文章为例:
scope :published, where("published_on IS NOT NULL")
scope :draft, where(:published_on => nil)
使用适当的范围和新字段来限制后续操作。
这种方法比你要求的更多: