【问题标题】:Couldn't find controller without an ID找不到没有 ID 的控制器
【发布时间】:2015-01-21 14:53:59
【问题描述】:

我正在尝试通过 Schneems 在 Rails 上构建 Reddit。我在提交新的link 时不断收到此错误。

红宝石 1.9.3

Rails 4.2.0

我的 Links#Controller 出了什么问题?

class LinksController < ApplicationController

def show
  @link = Link.find(params[:id])
end

def new
 @link = Link.new
end

def create
  @link = Link.new(links_params)
 if @link.save
  redirect_to(:action => 'show')
 else
  render('new')
 end
end

private
  def links_params
    params.require(:link).permit(:title, :url)
  end
end

代码应将我带到显示提交标题和网址的页面。但它给了我:

ActiveRecord::RecordNotFound in LinksController#show
Couldn't find Link without an ID
Rails.root: C:/Users/Andrew/Documents/reddit_on_rails
Application Trace | Framework Trace | Full Trace
app/controllers/links_controller.rb:4:in `show'

新视图是:

<h1>New link</h1>


<%= form_for @link do |f| %>
<% if @link.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@link.errors.count, "error") %> prohibited this link from   being saved:</h2>

  <ul>
  <% @link.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>

<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :url %><br />
<%= f.text_field :url %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

我已经在 bundler 中添加了强大的参数,但是什么也没做。

【问题讨论】:

  • 您应该使用:id 参数而不是:link 参数来查找您的记录,因为:link 参数不存在。
  • 这也不会改变任何东西
  • @АндрейВолков Andrew,您的数据库中有链接吗?您确定您的链接 ID 是从表单中正确传递的吗? links_params 是否已填充?
  • 链接从 Rails 控制台提交正常:$ Link.create(:url => "stack.com", :title => "stack")。然后可以在控制台中访问 $ Link.last.url => "stack.com" $ Link.last.title => "stack"。我不确定如何检查正确的 ID 传递..

标签: ruby-on-rails ruby controller reddit


【解决方案1】:

我在四天后修复了它(终于!)。 所以链接控制器应该是这样的:

def create
@link = Link.new(links_params)
if @link.save
  render('show')
else
  render('new')
end

因为在它把我带到 localhost:3000/links/show 页面之前,我需要 localhost:3000/links/id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多