我想进行一个简单的提交,理想情况下没有路由,将样本插入数据库,但我遇到了一些麻烦。
这是金融指数:
索引.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
)