我有两个表单的视图,我正在尝试提交一个表单,其中包含一个指向具有操作的控制器的链接。但是,当我尝试将其提交给它时,请在我的另一个控制器中查找操作。我尝试以不同的方式使用参数,但没有成功。我知道我的routes文件有问题,但我不明白是什么,因为我是Rails新手。如果有帮助的话,我也在使用Rails 5。
编辑:第二个表单是失败的表单。
错误:
No route matches {:action=>"scrape", :controller=>"links_to_be_scraped"}
查看:
<%= form_for WatchedLink.new, url: {action: "create"}, html: {class: "links_to_be_scraped"} do |f| %>
<%= f.text_field (:link) %>
<%= f.submit "Save" %>
<% end %>
<% @url = 'default' %>
<%= form_for @url, url: {action: "scrape"}, html: {class: "page_scraper"} do |f| %>
<%= f.text_field (:url) %>
<%= f.submit "Scrape" %>
<% end %>
控制器:
class PageScraperController < ApplicationController
require "nokogiri"
require "open-uri"
require "diffy"
require 'htmlentities'
def scrape
@url = params[:url]
page = Nokogiri::HTML(open(@url)).to_s
coder = HTMLEntities.new
encodedHTML = coder.encode(page)
puts page
end
end
路线。铷
Rails.application.routes.draw do
root 'links_to_be_scraped#index'
resources :page_scraper do
member do
get :scrape
end
end
resources :links_to_be_scraped do
member do
get :delete
end
end
end
路由控制台
Prefix Verb URI Pattern Controller#Action
root GET / links_to_be_scraped#index
scrape_page_scraper GET /page_scraper/:id/scrape(.:format) page_scraper#scrape
page_scraper_index GET /page_scraper(.:format) page_scraper#index
POST /page_scraper(.:format) page_scraper#create
new_page_scraper GET /page_scraper/new(.:format) page_scraper#new
edit_page_scraper GET /page_scraper/:id/edit(.:format) page_scraper#edit
page_scraper GET /page_scraper/:id(.:format) page_scraper#show
PATCH /page_scraper/:id(.:format) page_scraper#update
PUT /page_scraper/:id(.:format) page_scraper#update
DELETE /page_scraper/:id(.:format) page_scraper#destroy
delete_links_to_be_scraped GET /links_to_be_scraped/:id/delete(.:format) links_to_be_scraped#delete
links_to_be_scraped_index GET /links_to_be_scraped(.:format) links_to_be_scraped#index
POST /links_to_be_scraped(.:format) links_to_be_scraped#create
new_links_to_be_scraped GET /links_to_be_scraped/new(.:format) links_to_be_scraped#new
edit_links_to_be_scraped GET /links_to_be_scraped/:id/edit(.:format) links_to_be_scraped#edit
links_to_be_scraped GET /links_to_be_scraped/:id(.:format) links_to_be_scraped#show
PATCH /links_to_be_scraped/:id(.:format) links_to_be_scraped#update
PUT /links_to_be_scraped/:id(.:format) links_to_be_scraped#update
DELETE /links_to_be_scraped/:id(.:format) links_to_be_scraped#destroy
由于您不想在表单提交时发出GET请求,因此您应该将刮取路径定义为POST(或者PUT或PATCH,无论什么最适合您的需要,澄清一下,也许此stackoverflow POST和rails指南有帮助)。
由于您当前没有特定的刮页器
对象提供给刮页
路由,因此请完全删除成员
-块,并将刮页器路由单独定义为自定义路由。大概是这样的:
resources :page_scraper
post 'scrape_page', to: 'page_scraper#scrape'
而不是
resources :page_scraper do
member do
get :scrape
end
end
(/page\u scraper/:id/scrape
VS/page\u scraper/scrape
)
之后,您应该能够将表单标题更改为以下内容:
form_for @url, url: {controller: 'page_scraper', action: 'scrape'} do |f|
因为这是一个非资源路由的情况,所以这是一个很好的地方,可以清楚地了解应该如何定义它:http://guides.rubyonrails.org/routing.html#non-足智多谋的路线
提交表单时出错 当请求的凭据模式为“包括”时,响应中的“访问控制允许来源”标头的值不得为通配符“*”。起源'https://local.oto.com因此,不允许访问。
我正在尝试使用spring data JPA repository方法在数据库中插入4个表单字段name、age、location和address。当我将表单提交到操作时,控制器不会无法接收提交的值。在控制器操作中获取null。在这里,我尝试使用spring、spring boot和spring data JPA。下面是我的控制器, 我的形式是, 导入javax.persistence.*;
刚开始使用Ruby,我无法通过下面发布的错误。这是我的代码: 控制台中的错误: C: /Ruby23/lib/ruby/2.3.0/net/http。rb:933:inconnect来自C:/Ruby23/lib/ruby/2.3.0/net/http。rb:863:instart'来自C:/Ruby23/lib/ruby/2.3.0/net/http。rb:1398:inperform'来自C:
大家要切记这一点: 在任何 Single Page App中,js代码都不会产生 一个传统意义的form表单提交!(这会引起整个页面的刷新) 所以,我们往往用事件来实现.(桌面开发思维) 假设,我们在远程有个接口,可以接受别人的留言: URL: http://siwei.me/interface/blogs/add_comment 参数: content: 留言的内容. 请求方式: POST 返回
我有一个使用Spring MVC和Thymeleaf的项目。我需要根据每个用户的偏好,用不同的格式显示日期。例如,用户A希望显示类似MM/dd/yyyy的日期,而用户B希望显示类似dd/MM/yyyy-y的日期。 为此,我使用以下thymeleaf参数: 值“dateFormat”基于用户首选项。这很好。 我的问题是日期输入在一个表单中,当我提交表单时,它没有采用好的格式。我总是得到MM/dd/y