导轨上的红宝石 - 错误 没有路由与控制器匹配,操作更正



我想进行一个简单的提交,理想情况下没有路由,将样本插入数据库,但我遇到了一些麻烦。

这是金融指数:

索引.html.erb(金融路径)

<%= form_for(@place,:url => new_place_finance_path,:method => :put) do |f| %>
  <%= f.text_field :place %>
  <%= f.submit %>
<% end %>

如果可能的话,我不想创建成员,我该如何在路线中制作:

resources :finances do
  member do
    put :new_place
  end
end

和我的财务总监:

def index
  @finances = Finance.all
  respond_with @finances
  @place = Place.new
end

和行动new_place:

def new_place
  @place = Place.create(params[:place])
  @place.save
  if @place.save
    redirect_to finances_path,:notice => 'Lugar criado com sucesso.'
  else
    redirect_to finances_path,:notice => 'Falha ao criar lugar.'
  end 
end

我收到此错误:

No route matches {:action=>"new_place", :controller=>"finances", :id=>nil}

当我执行耙子路由时:

new_place_finance PUT    /finances/:id/new_place(.:format) finances#new_place

你在这里有一些不寻常的事情。 如果要创建新地点,通常会在路线中执行此操作。 如果金融可以有很多地方,那么它就是这样......

resources :finances do
  resources :places
end

这将创建一个名为 new_finance_place(@finance) 的方法,该方法将带您进入新窗体。 它将创建另一个指向/finances/:finance_id/posts 的 url,该 url 将期望一个 POST - 它将在 PostsController 中调用 create 方法。

从新表格中,您将能够编写:

<%= form_for [@finance, @place] do |f| %>

new_place_finance_path需要一个财务对象才能正确评估。 在您上面粘贴的路线中

 new_place_finance PUT    /finances/:id/new_place(.:format) finances#new_place

因此new_place_finance_path(@finance):id替换为@finance.id(如果您在模型中创建了该方法,则to_param

相关内容

  • 没有找到相关文章

最新更新