由于示波器和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]中
我的问题是,这会在形式上产生错误的网址.我怎么能让这个工作?
经过处理的网址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方法覆盖为以下内容:
- def default_url_options(options={})
- { :tab => params[:tab] }
- end
然后<%= form_for @article do | f | %GT;可以使用,并正确生成所有网址