私は Sinatra アプリを構築しており、Sinatra がどのように機能するかを学ぶために直線的に (メソッドなしで) 書きました。今、私はそれをリファクタリングしようとしていますが、フォーム送信からのパラメーターがメソッドに渡されていません。ルートは次のとおりです。
get '/' do
erb :index
end
post '/' do
session = login(params[:username], params[:password])
get_courses(session, params[:username])
erb :index
end
そしてここにindex.erbがあります
<% if !@courses %>
<form action="/" method="post">
<input type="text" label="username" name="username">
<input type="password" label="password" name="password">
<input type="submit">
</form>
<% end %>
<% if @courses %>
<ul>
<% @courses.each do |course| %>
<li><%= course %></li>
<% end %>
</ul>
<% else %>
<p>No course data yet.</p>
<% end %>
私はそれらの簡単なプットを行うことができたので、パラメータがSinatraに渡されていることを知っていますが、メソッドにそれらを渡そうとすると、「ArgumentError at /間違った数の引数(2に対して0)」が発生します。
アップデート
ルートと同じファイルから、ログイン方法を次に示します。
def login(username, password)
login = Savon::Client.new($LOGIN_WSDL)
login.http.auth.ssl.verify_mode = :none
session = login.request(:login) do
soap.body = { :id => username, :pw => password }
end
session.to_hash
end