繁体   English   中英

未定义的局部变量或方法“ link_params”

[英]undefined local variable or method `link_params'

我正在通过教程来制作Reddit模型。 在本地主机上时,我在新页面上(提交新链接),可以在其中提交标题和网址。

每当我提交信息时,我都会最终进入空白的创建视图。

本教程要求我们找到一种方法来填充数据库,并在显示视图中显示我们提交的信息,并在索引页面上提供我们新提交的信息。

这是我为此编辑控制器的尝试,但是我失败了:

class LinksController < ApplicationController

    def index
      @link = Link.all
    end

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

    def new
      @link = Link.new
    end

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


end

我收到一条错误消息:

undefined local variable or method `link_params'

有关如何解决此问题的任何建议?

这是我的新观点:

这是新视图:

<%= 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 :url %><br />
    <%= f.text_field :url %>
  </div>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我的表演视图当前为空,但保留了一些标题文本:

另外,如果有人对如何进一步改善我的控制器和视图也有一些建议,以取得理想的结果表示赞赏,我是新来的并尝试学习,谢谢。

您的控制器中需要一个link_params方法

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

当您从浏览器提交表单时,它将触发控制器操作。 该表格将提交一些需要处理的参数。 按照rails日志查看返回的内容,这是了解和调试事物的最佳简单方法。

在您的创建操作@link = Link.new(link_params)中,您正在使用link_params数据初始化Link对象,提交表单时检查哪个参数包含哈希。 解析该哈希以在Link类对象中传递数据。 从服务器日志中确认后,您需要定义link_params或使用params [:link]之类的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM