Ruby自定义创建方法

时间:2013-05-18 11:11:37

标签: ruby-on-rails ruby

我搭建了一个Authorization(user_id,code,otherparam1,...),我想在authorizations_controller中添加一个custom_create方法,该方法只需要一个代码,该方法生成其他参数。我需要这个方法来使用json或者在其他方法中调用,比如User.newcustom(code)

def newcustom
  case request.method
  when :post #post
    code = params[:code]
    if(code and code != '')
      ...
      respond_to do |format|
      if @authorization.save
        format.html { redirect_to @authorizations, notice: 'Authorization was successfully created.' }
        format.json { render json: @authorizations, status: :created, location: @authorization }
      else
        format.html { render action: "new" }
        format.json { render json: @authorization.errors, status: :unprocessable_entity }
      end
    end
  else #get
    respond_to do |format|
      format.html
    end
  end

这是我的newcustom.html.erb

<%= form_tag( newcustom_authorizations_path, :method => :post ) do %>
  <div class="field">
    <%= text_field_tag :code %>
  </div>
  <div class="actions">
    <%= submit_tag('Get tokens') %>
  </div>
<% end %>

但它不能通过形式的json工作。调用newcustom(:code =&gt;代码)方法会抛出太多参数(1表示0)。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

为此添加给定的代码到config / routes.rb

  resources :authorizations do
    collection do 
      post :newcustom
    end
  end

答案 1 :(得分:0)

感谢大家的帮助。

我最终解决了我的问题,过滤了create函数的参数,然后调用了我的customcreate参数。 是的,我在玩:)