代码之家  ›  专栏  ›  技术社区  ›  user3408293

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

  •  1
  • user3408293  · 技术社区  · 12 年前

    我正在通过教程制作一个reddit模型。当我在本地主机上时,我会在新页面(提交新链接)上提交标题和url。

    每当我提交信息时,我都会看到一个空白的创建视图。

    本教程要求我们找到一种方法来填充我们的数据库,并最终以我们提交的信息&我们的索引页上也有我们新提交的信息。

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

    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 %>
    

    我的显示视图当前为空,保存一些标题文本:

    此外,如果有人对如何进一步改进我的控制器提出了一些建议;为了获得期望的结果,我是一个新人;努力学习,谢谢。

    2 回复  |  直到 12 年前
        1
  •  0
  •   j-dexx    12 年前

    控制器中需要link_params方法

    def link_params
      params.require(:link).permit(:url, :title)
    end
    
        2
  •  0
  •   Bijendra    12 年前

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

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