1

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

这是金融指数:

index.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}

当我执行 rake 路由时:

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

2 回答 2

1

你这里有一些不寻常的东西。如果你想创建一个新的地方,你通常会在路线中这样做。如果金融可以有很多地方,那就是这样……

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| %>
于 2013-01-31T00:50:18.920 回答
0

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如果您在模型中创建了该方法)

于 2013-01-31T00:50:47.133 回答