ruby​​ on rails/routing-filter/form_for html

问题描述:

这个问题与路由过滤有关。ruby​​ on rails/routing-filter/form_for html

我有这个在我看来:

<% form_for :post, :url => {:action => "show"} do |f| %> 

它转换在浏览器这样的:

<form action="/en/posts/show" method="post"> 

改变I18n.locale例如后

I18n.locale = :en 

的HTML变为:

<form action="/en/posts/72" method="post"> 

,并且操作不工作,我得到这个错误:

Unknown action

No action responded to 72.

当然,也有像72没有动作此号码是当然显示动作的输入。这是正确的邮政编号。所以如果我把这个地址localhost:3000/en/posts/72放到浏览器中,那么它给了我这个页面没有问题。

那么为什么它不能在窗体中工作呢?

谢谢。

+1

你为什么张贴到节目的行动? – askegg 2009-08-18 00:22:50

+0

为什么不呢? 从脚手架默认显示动作的代码有 @post = Post.find(params [:id],... 所以它应该采取的编号是正确的吗? – valk 2009-08-18 15:32:27

+0

POSTing意味着发送数据来更新一个对象。用于显示的对象和GET请求已足够并且是RESTful。 – askegg 2009-08-18 23:51:12

指定这样的方法:

<% form_for :goal, :url => { :action => 'show' }, :html => {:method => :put} do |f| %> 

它为我工作。