更新数据时的奇怪重定向

时间:2017-01-10 23:20:46

标签: ruby-on-rails updates scaffolding

我通过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认为&#39; @ portfolio&#39;是零

编辑2:添加了私人&#39; set_portfolio&#39; PARAMS

private
  # Use callbacks to share common setup or constraints between actions.
  def set_portfolio
    @portfolio = Portfolio.friendly.find(params[:id])
  end

我的应用程序出了什么问题?

1 个答案:

答案 0 :(得分:1)

portfolios_path是收集路径。

更改它portfolio_path应该修复它。

<击> <%= form_for @portfolio, url: portfolio_path(@portfolio) do |f| %>

我猜你也会使用这个表单来创建新的投资组合,所以将其更改为<%= form_for(@portfolio) %>应该修复它,并且也适用于这两种情况。 form_for将提交正确的路径。