scope - form_for 和作用域,rails 3

标签 scope ruby-on-rails-3 form-for

由于范围和 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/

相关文章:

ruby-on-rails - Rails 3 - 防止 form_for DOM 操作更改

c++ - 遇到段错误 : It looks like my comparator is trying to compare nodes out of scope

ruby-on-rails - 基于关系创建范围

ruby-on-rails-3 - 使用带有空关联的nested_form gem 时出错

ruby-on-rails - Rails : Hidden field in form_for is not sending parameters to controller

ruby-on-rails - form_for [@nested, @resource], remote => true 响应 format.html rails 3.2.6

Powershell更改脚本中的默认变量范围

scope - 局部变量和全局变量之间的差异

javascript - rails : Passing controller variable to JS using ERB slows page?

javascript - ruby 轨道 : Render HTML partial as a one line of string