Мне нужно передать параметры из формы со значениями, не содержащимися в базе данных (так что форма будет иметь параметры, которые будут использоваться только этой страницей и больше никогда). При отправке формы я хочу передать эти параметры скрипту ruby, который был адаптирован на страницу html.erb.Передача настраиваемого параметра текстового поля _form на вторую страницу Rails
До сих пор все, что мне удалось сделать, это передать один параметр (полученный с более ранней страницы объекта, который имел как модель, так и контроллер), но я не могу передать форму моим текущим параметрам формы. Форма ниже будет отображаться ISBN, полученный из предыдущего link_to правильно
Это в настоящее время моя форма:
<%= form_tag(:controller => "pages", :action => "post_form", :condition => params[:condition], :isbn => params[:isbn], :price => params[:price], :description => params[:description], :comment => params[:comment]) do %>
<div class="field">
<%= label_tag "Book ISBN" %><br />
<%= params[:isbn] %>
</div>
<div class = "field">
<%= label_tag "Condition" %>
<%= select_tag :condition, raw("<option>Brand New'</option><option>Like New</option><option>Very Good</option><option>Good</option><option>Acceptable</option>")%>
</div>
<div class = "field">
<%= label_tag "Price" %>
<%= text_field_tag :price %>
</div>
<div class = "field">
<%= label_tag "Description" %>
<%= text_field_tag :description %>
</div>
<div class = "field">
<%= label_tag :comment %>
<%= text_field_tag :comment %>
</div>
<div class = "actions">
<%= submit_tag "Submit"%>
</div>
<% end %>
Я проверил мой хвост -f войти/production.log и это, как я знаю, что ISBN правильно передается на следующую страницу после отправки. Может ли кто-нибудь помочь мне разобраться, как передать другие параметры, которые должны быть взяты из самой формы?
=========================== EDIT1 ========= ================================= это мой код для post_form. В основном это касается API от Half.com. Мы первоначально испытал это с успехом в качестве рубинового сценария запуска с помощью команды быстрой
<%
require 'httpclient'
require 'nokogiri'
%>
<% isbn = params[:isbn] %>
<% condition = params[:condition] %>
<% price = params[:price] %>
<% description = params[:description] %>
<% comment = params[:comment] %>
<%
token = 'ourUniqueSellerToken'
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') { |xml|
xml.AddItem('xmlns' => 'default', 'xmlns' => 'urn:ebay:apis:eBLBaseComponents') do
xml.RequesterCredentials do
xml.eBayAuthToken token
end
xml.Item do
xml.AttributeArray do
xml.Attribute('attributeLabel' => 'Condition') do
xml.Value do
xml.ValueLiteral condition
end
end
xml.Attribute('attributeLabel' => 'Notes') do
xml.Value do
xml.ValueLiteral comment
end
end
end
xml.Country 'US'
xml.Currency 'USD'
xml.Description description
xml.ListingDuration 'GTC'
xml.ListingType 'Half'
xml.Location 'CO'
xml.Quantity '1'
xml.StartPrice price
xml.ExternalProductID do
xml.Value isbn
xml.type 'ISBN'
end
end
end
}
client = HTTPClient.new
uri = 'https://api.ebay.com/ws/api.dll'
headers = {
'X-EBAY-API-COMPATIBILITY-LEVEL' => '823',
'X-EBAY-API-DEV-NAME' => 'ourDevName',
'X-EBAY-API-APP-NAME' => 'ourAppName',
'X-EBAY-API-CERT-NAME' => 'ourCertName',
'X-EBAY-API-SITEID' => '0',
'X-EBAY-API-CALL-NAME' => 'AddItem'
}
results = client.post_content(uri, builder.to_xml, headers)
doc = Nokogiri::XML.parse(results)
%>
<b><%= "Returned: "+doc.css("Ack").text %> </b>
<b><%= "Listing ID: "+doc.css("ItemID").text %></b>
Контроллер для формы это просто пустая функция:
class PagesController < ApplicationController
def search
end
def listing
end
def post_form
end
end
========= === Ниже из моего журнала развития (открытие страницы формы) ==============
Started GET "/pages/listing?class=btn+btn-mini&isbn=9780307588364" for 138.67.201.236 at 2013-06-04 20:33:01 +0000
Processing by PagesController#listing as HTML
Parameters: {"class"=>"btn btn-mini", "isbn"=>"9780307588364"}
Rendered pages/_form.html.erb (1.4ms)
Rendered pages/listing.html.erb within layouts/application (1.9ms)
Completed 200 OK in 3ms (Views: 3.2ms | ActiveRecord: 0.0ms)
Started POST "/pages/post_form" for 138.67.201.236 at 2013-06-04 20:33:09 +0000
(на представленню)
ActionController::RoutingError (No route matches [POST] "/pages/post_form"):
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.13) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
rack-cache (1.2) lib/rack/cache/context.rb:143:in `pass'
rack-cache (1.2) lib/rack/cache/context.rb:155:in `invalidate'
rack-cache (1.2) lib/rack/cache/context.rb:71:in `call!'
rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
railties (3.2.13) lib/rails/engine.rb:479:in `call'
railties (3.2.13) lib/rails/application.rb:223:in `call'
railties (3.2.13) lib/rails/railtie/configurable.rb:30:in `method_missing'
passenger (4.0.2) lib/phusion_passenger/rack/thread_handler_extension.rb:77:in `process_request'
passenger (4.0.2) lib/phusion_passenger/request_handler/thread_handler.rb:135:in `accept_and_process_next_request'
passenger (4.0.2) lib/phusion_passenger/request_handler/thread_handler.rb:106:in `main_loop'
passenger (4.0.2) lib/phusion_passenger/request_handler.rb:449:in `block (4 levels) in start_threads'
passenger (4.0.2) lib/phusion_passenger/utils/robust_interruption.rb:108:in `disable_interruptions'
passenger (4.0.2) lib/phusion_passenger/request_handler.rb:444:in `block (3 levels) in start_threads'
(При обновлении)
Started GET "/pages/post_form" for 138.67.201.236 at 2013-06-04 20:33:14 +0000
Processing by PagesController#post_form as HTML
Rendered pages/post_form.html.erb within layouts/application (252.9ms)
Completed 200 OK in 257ms (Views: 256.6ms | ActiveRecord: 0.0ms)
Какое действие «post_form» в вашем контроллере страниц выглядит в вашем коде? – ply
отредактировал мой вопрос с помощью диспетчера страниц и post_form, если вам это нужно – CimmerianMuse