【问题标题】:'no implicit conversion of symbol into Integer' with form_for使用 form_for '没有将符号隐式转换为整数'
【发布时间】:2015-10-01 03:19:29
【问题描述】:

我收到了

没有将符号隐式转换为整数

使用以下代码:

<%= form_for  @question, admin_questions_path do |f| %>         
     <%= f.label :question %>   
     <%= f.text_area :question %>
<% end %>

但是当我改变form_for方法如下;表单正确呈现。

<%= form_for  [:admin, @question] do |f| %>

代码有什么区别?如果错误的代码使用路径admin_questions_path 路由到Admin::QuestionsControllercreate 方法,为什么它不起作用?我是 Rails 和命名空间的新手,所以我可能遗漏了一些非常明显的东西。

编辑:

问题控制器在 admin 下命名空间。

namespace :admin do
    resources :questions, only: [:index, :new, :create]
end

【问题讨论】:

  • admin_questions 是连接表吗?管理员是模型吗? QuestionsController 是否继承自 Admin?我也是 Rails 的新手,你的设置似乎不寻常。
  • here 有用吗?
  • @Jason 实际上这很有用,谢谢。答案是:“在视图中,您应该显式编写 url,因为控制器中有变量而不是控制器名称。”这意味着我应该使用:url =&gt; admin_questions_path,而不仅仅是admin_questions_path

标签: ruby-on-rails ruby


【解决方案1】:

第一个示例应该是编写以下内容的语法糖(如果我没记错的话):

form_for [@question, admin_questions_path] do |f|

您最可能想要的地方:

form_for @question, url: admin_questions_path do |f|

您的第二个表单使用多态路由来自动确定正确的路由,如果您想使用相同的表单进行编辑和创建,这很有用。 Arup 提供的链接应该对该主题有所帮助,有关路由的指南也是如此:http://guides.rubyonrails.org/routing.html

【讨论】:

  • 一百万次
猜你喜欢
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多