【问题标题】:redirect_to an instance variable does not work in Rails 4redirect_to 实例变量在 Rails 4 中不起作用
【发布时间】:2016-03-25 13:37:56
【问题描述】:

我对 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 做 资源:swversions 得到'欢迎/索引

请有人帮我消除这个问题

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    SwversionsController:0xa38d158 的未定义方法 `sw_versions_url'

    命名约定:

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

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

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

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

    更多关于命名约定here

    【讨论】:

    • 完全是帕万。非常感谢
    【解决方案2】:

    试试这个代码:

    redirect_to sw_version_path(@swversion)
    

    【讨论】:

    • 分享您的路线文件。
    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多