是否可以为静态页面创建表单并将数据存储在User表中

时间:2015-04-17 19:18:56

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我正在创建一个应用程序,用户可以在其中更改页面的背景颜色,页面标题和页面中的文本字体,它应该是单页面应用程序,其中更改应该与用户会话保持一致。我已经使用设计创建了身份验证,并且可以注册并登录页面。我创建了一个static_pages控制器,我在其中创建了表单并使用此表单将值存储在用户数据库中,现在当我尝试提交表单时,我得到了错误{无路由匹配[POST]},我的表单如下所示:

/app/views/static_pages/home.html.erb

<%= form_for :user do |u| %>
 <br > 
 <p>
    <%= u.label :title %><br>
    <%= u.text_field :title %>
  </p>

  <p>
    <%= u.label :description %><br>
    <%= u.text_field :description %>
  </p>

  <p> <%= u.label :back_ground_color %><br>
    <select name="back-ground" id="bgcolor">
        <option value="1">Orange</option>
        <option value="2">Green</option>
        <option value="3">Blue</option>
        <option value="4">Pink</option>
        <option value="5">Yellow</option>
        <option value="6">White</option>
    </select>
  </p>
  <div style="background: #{current_user.bg_color};"></div>

  <p>
    <%= u.label :font %><br>
    <select name="font" id="font">
        <option value="1">Times new Roman</option>
        <option value="2">Calibri</option>
        <option value="3">fantasy</option>
        <option value="4">serif</option>
    </select>
  </p>

 <br >
  <p>
    <%= u.submit %>
  </p>
  <hr >
  <div style="background-color:#{current_user.font.nil? ? '#FFFFFF' : current_user.font}">
    This is the changes made in background
  </div>

  <div style="background-color:#{current_user.bgcolor.nil? ? '#FFFFFF' : current_user.bgcolor}">

  </div>

<% end %>

的routes.rb

Rails.application.routes.draw do

  post '/static_pages/home'
  devise_for :users, controllers: { registrations: "users/registrations" }
  devise_scope :user do
    authenticated :user do
      root :to => 'static_pages#home', as: :authenticated_root
    end
    unauthenticated :user do
      root :to => 'devise/registrations#new', as: :unauthenticated_root
    end
  end

我有用户表,我已经为标题,bg颜色,字体和描述创建了额外的列,并尝试存储记录。

现在,当我尝试提交表单时,我收到No route matches [POST]错误。请让我知道您的建议和解决方案。

1 个答案:

答案 0 :(得分:0)

我总是通过这种路由声明格式完成rails POSTs

match 'static_pages/home/' => 'static_pages#home', :via => :post

其中第一部分是URL路径(加上任何变量,如果需要),第二部分是与之匹配的控制器方法,:via => :post表示也使用POST而不是GET。

同时查看Rails routing guides