2012-08-06 15 views
0

我正在構建一個表單以使用非activerecord模型。我有兩個問題..提交按鈕指向錯誤的動作

  1. 當我點到的關鍵字/ ID /編輯我的表單的提交按鈕說:「創建關鍵字」,並按下該按鈕提交帶我到創建方法我的關鍵字控制器上。它應該帶我去更新行動。

  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 

回答

0

在你的編輯操作更改@keyword = Keyword.new@keyword = Keyword.find(params[:id])或無論你找到關鍵字。如果您使用的是正常的RESTful rails路線,那應該這樣做。

其實,你可以做form_for(@keyword, :url => keyword_path(@result)和你的結果改變伊娃(result成爲@result

+0

我嘗試過了,得到了下面的路由錯誤'沒有路由匹配[POST]「/關鍵字/ 60836」' – 2012-08-06 02:58:54

+0

你的路線文件中有'resources:keywords'嗎?如果沒有,或者如果可以的話,粘貼你在你的'config/routes.rb'文件中包含單詞關鍵字的路徑。也許這只是一個開始的路由問題。編輯後的 – pjammer 2012-08-06 10:09:29

+0

以包含路線。謝謝 – 2012-08-06 17:01:45