由于范围和 rails 3 中的 form_for 助手,我遇到了问题。
路线 - 文件如下所示:
scope "(/:tab)" do
resources :article
end
表格看起来像这样:
<%= form_for(@article) %>
<%= f.label :title %>
<%= f.text_field :title %>
etc.
<%end%>
tab - 属性作为字符串存储在 params[:tab] 中
我的问题是这会在表单中生成错误的 url。我怎么能让这个工作?
流派的 url article_path(params[:tab], @article) 工作得很好
最佳答案
我想出的答案非常难看,但适用于更新和创建:
<%= form_for(@article, :url => (@article.new_record? ?
articles_path(params[:tab]) : article_path(params[:tab], @article) do |f| %>
更新:
更好的解决方案是将 default_url_options-method 覆盖为如下所示:
def default_url_options(options={})
{ :tab => params[:tab] }
end
然后 <%= form_for @article 做 |f| %> 可以使用,并且所有 url 都正确生成
关于scope - form_for 和作用域,rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741979/