0

非アクティブ レコード モデルで動作するフォームを作成しています。2つの問題があります..

  1. キーワード/ID/編集をポイントすると、フォームの送信ボタンに「キーワードの作成」と表示され、その送信ボタンを押すと、キーワード コントローラーの create メソッドに移動します。更新アクションに移動する必要があります。

  2. また、'id' という属性を更新アクションに送信したいと考えています。これを行う方法がわかりません。私が言ったように、これはアクティブレコードモデルではありません。

/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

config/routes.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 レール ルートを使用している場合は、それで十分です。

実際にはform_for(@keyword, :url => keyword_path(@result)、結果を ivar( become )に変更するだけです。result@result

于 2012-08-06T00:25:07.907 に答える