0

我正在构建一个表单来使用非 activerecord 模型。我有两个问题。。

  1. 当我指向关键字/id/编辑时,表单的提交按钮显示“创建关键字”,然后按下该提交按钮会将我带到关键字控制器上的创建方法。它应该带我进行更新操作。

  2. 我还想向我的更新操作发送一个名为“id”的属性。我不知道该怎么做。就像我说的,这不是一个 activerecord 模型。

/views/keywords/_form.html.erb

    <%= form_for(@keyword) do |f| %>

  <div class="field">

    <%= f.label :name %><br />

    <%= f.text_field :name %>

  </div>

  <div class="field">

    <%= f.label :keyword %><br />

    <%= f.text_field :keyword %>

  </div>

  <div class="field">

    <%= f.label :message1 %><br />

    <%= f.text_area :message1 %>

  </div>

  <div class="field">

    <%= f.label :message2 %><br />

    <%= f.text_area :message2 %>

  </div>

    <div class="field">

    <%= f.label :start_time %><br />

    <%= f.text_area :start_time %>

  </div>

  <div class="actions">

    <%= f.submit %>

  </div>

 <% end %>

/controller/keywords_controller.rb >> 编辑动作

def edit

    result = Keyword.find(params[:id])

    result = result.to_array(:get_response, :return, :data, :item)

    result = result.first

    @keyword = Keyword.new

    @keyword.id = result[:item][0][:value]

    @keyword.name = result[:item][1][:value]

    @keyword.keyword = result[:item][2][:value]

    @keyword.message1 = result[:item][3][:value]

    if(result[:item][4][:value] != {:"@xsi:type"=>"xsd:string"})

    @keyword.message2 = result[:item][4][:value]

    end

    @keyword.start_time = result[:item][5][:value]

end

/models/keyword.rb

    class Keyword 

   extend ActiveModel::Naming

  include ActiveModel::Conversion

  def persisted?

    false

  end

    attr_accessor :id, :name, :keyword, :message1, :message2, :start_time
  def self.get_keywords(cid)
    #get data from webservice 
  end

  end

配置/路由.rb

  SchoolBeacon::Application.routes.draw do

  devise_for :users

  devise_for :admins

  resources :keywords

  end
4

1 回答 1

0

@keyword = Keyword.new将您在编辑操作中的行更改@keyword = Keyword.find(params[:id])为关键字或找到关键字。如果您使用的是普通的 RESTful rails 路由,那么应该这样做。

实际上,您可以form_for(@keyword, :url => keyword_path(@result)将结果更改为 ivar(result变为@result)

于 2012-08-06T00:25:07.907 回答