【发布时间】:2017-01-11 07:49:58
【问题描述】:
我通过 Rails 命令rails g portfolio titre:string, thumbnail:string lien:string description:text 为投资组合生成了一个脚手架。我还添加了 FriendlyId 以获得更好的 URL,仅此而已。这是“更新”操作。
def update
if @portfolio.update(portfolio_params)
redirect_to @portfolio, notice: 'Portfolio mis à jour.'
else
render :edit
end
end
但是,当尝试更新我的投资组合中的项目时,提交按钮会尝试通过补丁访问“portfolio#update”,但会添加一个“.”。而不是 '/' 这给了我No route matches [PATCH] "/portfolios.test-1"
路线,我只有resources :portfolios
编辑:添加表单
<%= form_for @portfolio, url: portfolios_path(@portfolio) do |f| %>
<% if portfolio.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(portfolio.errors.count, "error") %> prohibited this portfolio from being saved:</h2>
<ul>
<% portfolio.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :titre %>
<%= f.text_field :titre %>
</div>
<div class="field">
<%= f.label :categorie %>
<%= f.text_field :categorie %>
</div>
<div class="field">
<%= f.label :description %>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :thumbnail %>
<%= f.file_field :thumbnail %>
</div>
<div class="field">
<%= f.label :lien %>
<%= f.text_field :lien %>
</div>
<div class="actions">
<%= f.submit 'Enregistrer' %>
</div>
<% end %>
我没有任何其他可能做@portfolio, url: portfolios_path(@portfolio),否则Rails 认为'@portfolio' 是nil
编辑 2:添加了私有“set_portfolio”参数
private
# Use callbacks to share common setup or constraints between actions.
def set_portfolio
@portfolio = Portfolio.friendly.find(params[:id])
end
我的应用有什么问题?
【问题讨论】:
-
我们能看到表单的代码吗?
-
我更新了我的问题
标签: ruby-on-rails updates scaffolding