我已经阅读了两种不同类型的助手,
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
答案 0 :(得分:0)
您已在操作前指定了set_article
,该操作将在该控制器的指定操作之前执行。但是,该函数未定义 - 这会导致错误。