我有简单的是或否附加的单选按钮:needs_dist.当我提交没有选择的表单时它工作得很好,但是当我选择了Yes时,它会抛出一个错误进行验证?它仅在以下时间验证:needs_dist => true.
模型
validates_presence_of :contact_name, :email, :postal_code, :series_id, :product_id, :company_name, :needs_dist
Run Code Online (Sandbox Code Playgroud)
视图
<%= f.radio_button(:needs_dist, "false") %>
<%= f.label :needs_dist, "Yes" %>
<%= f.radio_button(:needs_dist, "true") %>
<%= f.label :needs_dist, "No" %>
Run Code Online (Sandbox Code Playgroud)
控制器(以防万一)
def create_quote
@quote_request = QuoteRequest.new safe_quote_params
if @quote_request.save
@email = SiteMailer.quote_request(@quote_request).deliver
render :template => "request/quote_sent"
else
@series = Series.find params[:quote_request][:series_id] unless params[:quote_request][:series_id].blank?
render :template => "request/quote.html"
end
end
Run Code Online (Sandbox Code Playgroud) 可以来给我解释一下为什么必须使用 let !而不是在这种情况下让?只有当我包含 ! 时,测试才会通过。我以为我明白 let 会在该块中的每个“it”语句之前自动执行,但显然情况并非如此。
describe Artist do
before do
@artist = Artist.new(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
subject { @artist }
describe "virtual requests" do
let!(:virtual1) { FactoryGirl.create(:virtual_request, artist: @artist ) }
let!(:virtual2) { FactoryGirl.create(:virtual_request, artist: @artist ) }
it "should be multiple" do
@artist.virtual_requests.count.should == 2
end
end
end
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中通过javascript发送一些非常简单的ajax帖子和补丁请求.功能很好,按预期工作.但是,我没有在ajax请求参数中看到真实性令牌,它仍然有效.
$.ajax({
type:'PATCH',
url: '/dashboard/goals/#{@goal.id}.js',
data: $.param({
new_invitation: {
recipient_id: recId,
type: "GoalInvite",
user_id : #{current_user.id}
}
})
});
Run Code Online (Sandbox Code Playgroud)
并且参数在日志中显示如下 -
Parameters: {"new_invitation"=>{"recipient_id"=>"24", "type"=>"GoalInvite", "user_id"=>"23"}, "id"=>"234"}
Run Code Online (Sandbox Code Playgroud)
没有真实性令牌.我想我知道如何添加它,但我很惊讶它甚至没有它.任何人都可以对此有所了解吗?