从无关的View-on-Rails3.0创建模型



我正在尝试做一些相当简单的事情,但我不确定具体的方法。最简单的是,我有一个索引页面,您可以在其中注册邮件列表。

我正在尝试设置它,这样你就可以从索引页面将自己添加到邮件列表中,而不会看到邮件列表视图。我可以使用以下内容正确提交数据:

= form_for @mailing_list, :remote => true do |form| 
= if @mailing_list.errors.any?
  %ul
  = @mailing_list.errors.full_messages.each do |message| 
    %li
      = message
.field
  = form.label :email, 'Your email'
  = form.text_field :email
= form.submit "Add to Mailing List"

带控制器:

def create
  @mailing_list = MailingList.new(params[:mailing_list])
  if @mailing_list.save
    redirect_to(:root, :notice => 'Mailing list was successfully created.') 
  else
    ? How do I return the errors ?
  end
end

但我无法找回错误(例如,电子邮件无效等)。有更好的方法来做我正在尝试的事情吗?我只想能够从索引页面视图调用并响应MailingList控制器的操作。。。

我相信您想要一个在不离开该页面的情况下将某人添加到邮件列表的表单。

更好?嗯。好吧,我告诉你我做什么,你可以决定你喜欢什么。

我会在控制器中使用respond_to来区分标准html调用和远程js调用。然后,我将处理视图中的页面更改。我喜欢把展示放在视野中。

控制器:

def create
    @mailing_list = MailingList.new(params[:mailing_list])
    if @mailing_list.save
        respond_to do |format|
            format.html { redirect_to(:root, :notice => 'Mailing list was successfully created.') }
            format.js { render }    
        end 
    else
        respond_to do |format|
            format.html { render }
            format.js { render :errors }
        end
    end
end

create.js.erb

$('#errors').html('').hide();
$('form').html('Mailing list was successfully created.'); // needs a better element

errors.js.erb

$('#errors').html('<%= escape_javascript(@mailing_list.errors.full_messages.collect { |msg| content_tag :li, msg }.join().html_safe) %>').show();

您可以对@mailing_list上的errors对象执行某些操作,例如

flash.now[:error] = @mailing_list.errors.full_messages

相关内容

  • 没有找到相关文章

最新更新