【问题标题】:rails_admin customize view for new formrails_admin 为新表单自定义视图
【发布时间】:2016-03-03 13:09:57
【问题描述】:

我正在使用 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

所以,这就是我到现在为止所做的。
我获取的数据位于 page 变量中(movies_controller.rb 的 mydata 操作)。
我通过在控制台上打印来检查它。

现在我希望将这些数据填充到电影控制器的新表单中,或者我需要再创建一个操作来填充此表单数据。 怎么可能做到。 请帮忙。

【问题讨论】:

  • 您使用哪个变量存储获取的数据?如果显示该变量,会显示什么页面?
  • 我也用代码编辑了我的问题。我获取的数据在页面变量中。

标签: ruby-on-rails rails-admin


【解决方案1】:

添加一个 POST 和 GET 请求,以便可以提交表单添加一行

register_instance_option :http_methods do
      [:get, :post]
end

然后重启 rails 看看效果!! 您可以直接从 Rails 中的 Proc.new 功能调用 Mechanize 类。

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多