Ruby on rails 提交按钮指向错误操作

Ruby on rails 提交按钮指向错误操作,ruby-on-rails,forms,activerecord,Ruby On Rails,Forms,Activerecord,我正在构建一个表单以使用非activerecord模型。我有两个问题 当我指向keyword/id/edit时,表单的提交按钮显示“create keyword”,按下提交按钮,我将进入keyword控制器上的create方法。它应该带我去更新行动 我还想向我的更新操作发送一个名为“id”的属性。我不知道该怎么做。就像我说的,这不是activerecord模型 /视图/关键字/_form.html.erb <%= form_for(@keyword) do |f| %>

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

  • 当我指向keyword/id/edit时,表单的提交按钮显示“create keyword”,按下提交按钮,我将进入keyword控制器上的create方法。它应该带我去更新行动

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

  • /视图/关键字/_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 %>
    
    /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
    

    将编辑操作中的
    @keyword=keyword.new
    行更改为
    @keyword=keyword.find(params[:id])
    ,或者以您找到关键字的方式更改。如果您使用的是普通的restfulrails路由,那么就可以了


    实际上,你只需对(@keyword,:url=>关键字路径(@result)执行
    表单,然后将结果更改为ivar(
    result
    变成
    @result

    我尝试了它,得到了以下路由错误
    没有路由匹配[POST]“/keywords/60836”
    您的路由文件中是否有
    资源:关键字
    ?如果没有,或者如果可以,请粘贴
    配置/routes.rb
    文件中包含关键字的任何路由。可能这只是一个路由问题。签出并注意
    面向资源的样式
    部分,因为它解释了xpanded html在您的浏览器中的外观类似。请检查生成的代码是否与此一致,如果您的代码与此不一致,则说明您在其他地方遇到了问题。我假设您使用的是Rails 3.2,对吗?
      SchoolBeacon::Application.routes.draw do
    
      devise_for :users
    
      devise_for :admins
    
      resources :keywords
    
      end