我正在使用 rails_admin ,并且还为我的某项功能使用了自定义操作。
我的要求是使用mechanize gem从其他网站获取数据,我能够做到这一点
现在我需要在我的一个模型的新动作上发送所获取的数据,以便可以以新的形式预填充数据,我可以直接提交以保存到数据库。
任何帮助将受到高度赞赏。
提前谢谢。
我到目前为止工作的东西是:
LIB / rails_admin / mydata.rb
require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module Mydata
end
module RailsAdmin
module Config
module Actions
class Mydata < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :visible? do
authorized?
end
register_instance_option :collection do
true
end
register_instance_option :link_icon do
'icon-plus'
end
register_instance_option :pjax? do
false
end
register_instance_option :controller do
Proc.new do
end
end
end
end
end
end
/app/views/rails_admin/main/mydata.html.erb
<%= form_tag("/movies/mydata") do %>
<%= text_field_tag 'movie[url]', nil, placeholder: 'Enter URL...' %>
<%= submit_tag 'Fetch' %>
<% end %>
/app/controllers/movies_controller.rb
class MoviesController < ApplicationController
def mydata
m = Mechanize.new
page = m.get(url_params[:url])
puts page
redirect_to "/admin/movie/new"
end
private
def url_params
params.require(:movie).permit(:url)
end
end
/config/initializers/rails_admin.rb
require Rails.root.join('lib', 'rails_admin', 'mydata.rb')
RailsAdmin::Config::Actions.register(RailsAdmin::Config::Actions::Mydata)
RailsAdmin.config do |config|
config.actions do
mydata
end
end
所以,这就是我现在所做的
我提取的数据位于页面变量中(movies_controller.rb的mydata操作)。
我通过在控制台上打印来检查它。
现在我希望这些数据以新形式的电影控制器填充,或者我需要再创建一个动作来填充此表单数据。 如何做到这一点。 请帮忙。
答案 0 :(得分:0)
添加POST和GET请求,以便可以提交表单,添加类似
的行register_instance_option :http_methods do
[:get, :post]
end
并重启rails以查看效果!! 您可以直接从rails。中的Proc.new功能调用Mechanize类。