轨。尝试从表单发送参数(使用第一个form_tag,然后使用传统的html)

时间:2015-10-25 12:52:48

标签: ruby-on-rails

我已经阅读了两种不同类型的助手,

form_for and form_tag

这不是模型的约束,我只是想将一些搜索参数传递给控制器​​中的一个方法。

我尝试使用此帮助程序,但它不会显示文本字段。

<% form_tag({controller: "articles", action: "search"}, method: "get") do %>
     <p>
       Subject:<br />
       <%= text_field_tag "q" %>
     </p>
<% end % >

所以,然后我转向了每个人都理解的那个:

<form accept-charset="UTF-8" action="/articles/search" method="get" class="nifty_form">'
                     <p>
                       Subject:<br />
                       <input type ="text" name ="q">
                     </p>
<input type="submit" value="send">

在控制器中,我只想检查它是否有参数,所以我希望它显示出来:

def search
   render plain: params[:q].inspect
  end

但我收到了这个错误:

NoMethodError in ArticlesController#show
undefined method `set_article' for #<ArticlesController:0x007faa95e9ad08>

我不明白。为什么抱怨方法show?

首先,它确实存在,但仅作为

def show
end

并且在第二位,我试图将该参数发送到应该打印出来的搜索方法。

添加代码

根据要求。我包含了更多的控制器

class ArticlesController < ApplicationController
  before_action :set_article, only: [:show, :edit, :update, :destroy]

  # GET /articles
  # GET /articles.json
  def index
    @articles = Article.all
  end

  def search
   render plain: params[:q].inspect
  end

  # GET /articles/1
  # GET /articles/1.json
  def show

  end

  # GET /articles/new
  def new
    @article = Article.new
    render "digitmedia/home"
  end

  # GET /articles/1/edit
  def edit
  end

  # POST /articles
  # POST /articles.json

1 个答案:

答案 0 :(得分:0)

您已在操作前指定了set_article,该操作将在该控制器的指定操作之前执行。但是,该函数未定义 - 这会导致错误。