在模特的页面上,我显示两个链接“选择图片”和“拍摄” 图片'。之后,我成功地回到了那个页面 正确显示选择图片和所选图像。 但是,当我点击“拍照”时,相机打开,我拍照, 调用页面加载显示的图像,然后立即加载索引 显示该模型中的页面。
两个程序都是相同的,只有一个人调用的更改 'take_picture'和另一个叫'choose_picture'的人可以告诉我 为什么在第二种情况下应用重定向到模型中的索引页面?
def takepic
$id = @params['id']
Camera::take_picture(url_for :action => :camera_callback)
end
def choosepic
$id = @params['id']
Camera::choose_picture(url_for :action => :camera_callback)
end
def camera_callback
if @params['status']='ok'
@abc = Abc.find($id)
new_attributes = {"q1img"=>@params['image_uri']}
@abc.update_attributes(new_attributes ) if @abc
@abc.save
WebView.navigate( url_for :action => :mypage, :query => {:id =>
$id})
end
end
<tr>
<td class="itemLabel">
<%= link_to '[Choose Picture]', :action => :choosepic , :query
=> { :id => @property.object } %>
</td>
<td class="itemValue">
<% if System::get_property('has_camera') %>
<%= link_to '[Take Picture]', :action => :takepic, :query =>
{ :id => @property.object } %>
<% end %>
</td>
</tr>
===============
I 09/09/2010 07:23:08:83 7a934000 RHO PropertyCon |布局文件:/apps/app/layout_erb.iseq。内容大小:2202
I 09/09/2010 07:23:08:83 7a934000 APP | RhoApplication:使用菜单 - {“Home”=&gt;:home,Refresh“=&gt;:refresh,”Sync“=&gt;:sync,”Options“=&gt;:options,”Log“=&gt;:log, :separator =&gt; nil,“关闭”=&gt;:关闭}
I 09/09/2010 07:23:08:83 7a934000 RhoConnection |派遣结束
I 09/09/2010 07:23:08:161 7a934000 RhoConnection |调度开始
I 09/09/2010 07:23:08:223 7a934000 APP | RhoApplication:使用菜单 - {“Home”=&gt;:home,“Refresh”=&gt;:refresh,“Sync”=&gt;:sync,“Options”=&gt;:options,“Log”=&gt;:log ,:separator =&gt; nil,“关闭”=&gt;:关闭}
I 09/09/2010 07:23:08:223 7a934000 APP |在RHO.serve_index内:/apps/app/index_erb.iseq
I 09/09/2010 07:23:08:223 7a934000 RHO Rho :: RhoCon | inst_render_index
答案 0 :(得分:2)
在你的takepic和choosepic方法结束时,你应该使用重定向到拍摄照片后你想要的应用程序。通过不在takepic或choosepic中重定向或渲染,您使用的是默认值,它会尝试渲染“takepic”或“choosepic”的视图。
您需要这样做,因为在您的camera_callback方法中,如果结果为“ok”,则只调用WebView.navigate。如果用户取消了图片,则不会更改导航。