【问题标题】:Where are the actions in my controller- Rails4我的控制器中的操作在哪里-Rails4
【发布时间】:2015-07-31 18:48:27
【问题描述】:
我不知道我的控制器文件中的操作在哪里。这是内容:
class MarcasController < InheritedResources::Base
private
def marca_params
params.require(:marca).permit(:nombre, :comentarios)
end
end
怎么了??
【问题讨论】:
标签:
ruby-on-rails
controller
action
【解决方案1】:
inherited_resources gem 隐式添加这些操作。大概这是您正在处理的其他人的代码?
【解决方案2】:
MarcasController 是你的控制器,
marca_params 是你的行动。但是它是私有的,所以它不能被路由器访问。
如果您希望您的操作可以从网站访问,您需要执行以下操作:
创建公共操作
class MarcasController < InheritedResources::Base
def index
end
private
def marca_params
params.require(:marca).permit(:nombre, :comentarios)
end
end
**在你的routes.rb **
get '/marcas' => 'marcas#index'
创建对应视图,添加文件app/views/marcas/index.html.erb。
然后您将能够访问您的操作。
通常如果您需要一个需要 CRUD 操作(创建、读取、更新删除)的控制器。您可以运行 rails 命令来创建您需要的所有文件。
rails generate scaffold marcas nombre:text comentarios:text
【解决方案3】:
控制器操作是另一种说法,即“响应 http 请求的方法”。它们在您的路由文件中定义,例如:
post 'marcas/', :to => 'marcas#create'
他们通常在视图或请求中这样说。所以
class MarcasController < InheritedResources::Base
# create action
def create
@marca = @marcas.create(marcas_params)
end
private # good for strong params and other private methods
def marca_params
params.require(:marca).permit(:nombre, :comentarios)
end
end