redirect_to实例变量在Rails 4中不起作用

时间:2016-03-25 13:37:56

标签: ruby-on-rails

我对Rails完全不熟悉。刚刚从http://guides.rubyonrails.org/getting_started.html开始 虽然尝试我遇到redirect_to问题,如下面的错误 -

NoMethodError in SwversionsController#create
undefined method `sw_versions_url' for #<SwversionsController:0xa38d158>
Rails.root: C:/Sites/edisonprojectmanagement
Application Trace | Framework Trace | Full Trace
app/controllers/swversions_controller.rb:19:in `create'*

单击“提交”按钮后会出现此错误。我发现模型工作正常,数据保存在我的postgresql数据库中。 我认为问题在于我的redirect_to方法。

我的SwVersionsController代码看起来像 -

class SwversionsController < ApplicationController
def index

end
def show
    @swversion = SwVersion.find(params[:id])

end
def new

end

def create
    @swversion = SwVersion.new(swversion_params)
    @swversion.save
    redirect_to @swversion
end

private
def swversion_params
    params.require(:swversion).permit(:sw_version, :description)
end
end

new.html.erb代码是 -

<h1> New SW versions </h1>
<%= form_for :swversion, url: swversions_path do |f| %>
<p>
 <%= f.label :sw_version, "SW Version" %> <br>
 <%= f.text_field :sw_version %>
</p>
<p>
    <%= f.label :description, "Description" %> <br>
    <%= f.text_area :description %>
</p>
<p>
    <%= f.submit "Submit" %>
</p>
<% end  %>

我的routes.rb很简单

Rails.application.routes.draw做   资源:转换   得到'欢迎/索引

有人请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

  

未定义的方法`sw_versions_url&#39;对于SwversionsController:0xa38d158

命名约定:

Rails在命名方面非常严格,并且有充分的理由。 Rails期望类名为 CamelCase ,方法/变量为 snake_case

您的 模型类名称 SwVersion,因此方法/变量名称应为sw_version而不是swversion。因此,您应该在整个代码中将swversion更改为sw_version

您还应将 控制器类名称 更改为SwVersionsController

如果resources :swversions中有routes.rb,那么您应将其更改为resources :sw_versions

有关 命名惯例的更多信息 here

答案 1 :(得分:0)

试试这段代码:

redirect_to sw_version_path(@swversion)