Bob*_*Bob 9 ruby-on-rails ruby-on-rails-3
我的设置:Rails 3.0.9,Ruby 1.9.2
我向嵌套资源任务添加了自定义操作.
routes.rb
resources :tasks
resources :projects do
resources :tasks, :constraints => { :protocol => "http" } do
put :cancel, :on => :member
end
end
Run Code Online (Sandbox Code Playgroud)
rake routes 节目
cancel_project_task PUT /projects/:task_id/tasks/:id/cancel(.:format) {:protocol=>"http", :action=>"cancel", :controller=>"tasks"}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,
tasks_controller.rb
def cancel
@task = Task.find(params[:id])
respond_to do |format|
if @task.cancel
format.html { redirect_to(@task, :notice => 'Task was successfully canceled.') }
else
format.html { render :action => "edit" }
end
end
end
Run Code Online (Sandbox Code Playgroud)
我需要定义一个表单来执行操作,这就是我目前所拥有的
_form.html.erb for subscription
<%= form_for [@project, @task], :url => { :action => 'cancel' } do |f| %>
<%= f.submit "Cancel your task"%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误
No route matches {:action=>"cancel", :controller=>"tasks"}
Run Code Online (Sandbox Code Playgroud)
我也尝试添加:method => "put"相同的错误
_form.html.erb for subscription
<%= form_for [@project, @task], :url => { :action => 'cancel', :method => "put" } do |f| %>
<%= f.submit "Cancel your task"%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
任何人都知道正确的form_format语法来实现这一目标吗?
Bob*_*Bob 23
如果有人想要答案,这就是我必须做的
<%= form_for [@project, @task], :url => cancel_project_task_path(@project, @task) do |f| %>
Run Code Online (Sandbox Code Playgroud)
我花了太长时间才弄清楚这一点,希望这有助于下一个毫无戒心的开发人员.
| 归档时间: |
|
| 查看次数: |
2782 次 |
| 最近记录: |