【发布时间】:2021-02-14 15:06:01
【问题描述】:
我有一个“贡献”模型。创建表单有两个提交操作:“Preview”和“Submit for Review”。当用户单击“预览”时,我想收集表单数据,然后在同一页面上显示预览。以下是我的处理方式:
表格:
<%= form_with(model: @contribution, local: true) do |form| %>
<% if @contribution.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@contribution.errors.count, "error") %> prohibited this contribution from being saved:</h2>
<ul>
<% @contribution.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.url_field :link, placeholder: "Unsplash photo link", required: true %>
</div>
<div class="actions">
<%= submit_tag 'Preview', id: 'preview-button', name: 'preview_button' %>
<%= submit_tag 'Submit for Review', id: 'submit-button' %>
</div>
<% end %>
贡献控制器:
def create
@contribution = Contribution.new(contribution_params)
if params[:preview_button]
/// do some stuff to collect data
render action: "new"
else
...
路线:
resources :contributions
get "/contribute" => "contributions#new"
当前结果
页面刷新并且控制器中处理的数据可用(耶!)。但是,URL 从 /contribute 更改为 /contributions。如果用户碰巧刷新页面,他们会遇到错误,因为我没有贡献#index 视图。
期望的结果
页面刷新,数据可用,但 url 保持为 /contribute。
【问题讨论】:
-
也请分享表格。
-
已编辑以包含完整表格
-
尝试将
render action: "new"更改为return render 'new' -
@BroiSatse 不走运。它似乎仍然呈现“新”视图,但 url 是 /contributions
-
@rcrusoe 在你的路由中添加这个资源之后:contributions
resolve("Contributions") { [:contributions] }.
标签: ruby-on-rails ruby forms